Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I use a .tex file that I sync with Dropbox across two computers, - mac (running win 7) and a pc.

The problem is that the .tex file is large, and contains a lot of tex commands (even user-written ones) like:

\addbibresource{D:/Gdrive/Drop/Dropbox/latex/main/my.file.tex}

Of course, this is the absolute path on my PC and the same file on my mac looks like:

\addbibresource{C:\Dropbox\latex\main\my.file.tex}

Note how / are changed in \ and how the path is different.

My question is: how can I simply (and quickly) change all the paths when I move from my pc to my mac and vice versa? I use the latest winedt version to edit my latex file.

Many thanks for your help!

share|improve this question
4  
You must not use absolute paths. Use always relative paths. It is more simple and it is necessary for security reason too. –  user56567 Jul 20 at 10:49
1  
\addbibresource{file.bib} (sorry, but I think that .bib is more appropriate for \addbibresource command) is the solution if latex/main/ is the working directory for both system. –  user56567 Jul 20 at 10:54
1  
If you need to access a .tex file that is located in the main\other folder you have to write \input{main/other/file.tex} –  user56567 Jul 20 at 10:58
1  
First: I don't know. Second: ../ go back in the folder. –  user56567 Jul 20 at 12:21
1  
The paths are relative to the directory in which you are running pdflatex (or whichever). So if you run pdflatex main/my.file then the paths should be relative to the latex directory (i.e. to get to main/other/file you would simply put that). If you change into the main folder and run pdflatex my.file, then to get to the other folder you should put ../other/file. This messed me up so many times when I was using subfiles... :-) –  darthbith Jul 20 at 12:27

1 Answer 1

up vote 2 down vote accepted

Perhaps use a system dependent preamble for this kind of information.

On the mac:

% systempreamble.tex 
\newcommand{\pathtostuff}{D:/Gdrive/Drop/Dropbox/latex/main}

On the pc:

% systempreamble.tex

% latex uses / for paths, even on a pc
\newcommand{\pathtostuff}{C:/Dropbox/latex/main}

In your document

\input{systempreamble}
% ...
\addbibresource{\pathtostuff/my.file.tex}

(I haven't tested this since there's no easy MWE.) You should also consider the comments about absolute path names.

share|improve this answer
    
This is smart, thanks. But an even smarter way to go would be to run a shell like command pwd in latex to get the current working directory. Is that possible? –  Noobie Jul 20 at 13:05
1  
I wouldn't use that strategy. If you want to try, the answer here may help: tex.stackexchange.com/questions/16790/… –  Ethan Bolker Jul 20 at 13:11
    
Thanks! May i ask you why you would not use that? The idea is just to run your tex file on whatever computer you want without messing manually with the code –  Noobie Jul 20 at 13:29
1  
Using a shell script escape is more complex, so harder to write and more prone to error. It may solve this particular problem, but it's less flexible. It might be worth doing if you were writing TeX for many users to compile on many computers. In this case I'd go with the generally useful design principle that puts macros in a preamble. You will do that often as you move from Noobie status. Once you've written the (system dependent) preamble you don't have to "mess manually with the code" - you just run it. –  Ethan Bolker Jul 20 at 13:42
    
Thanks ethan! I lolled at the noobie status joke :) –  Noobie Jul 20 at 13:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.