Независимая от операционной системы адресация изображений - PullRequest
1 голос
/ 03 декабря 2009

В связи с использованием на моем компьютере Windows и Ubuntu, я хотел бы иметь возможность создавать документы независимо. У меня есть один каталог для логотипов, и я хочу использовать их в любых документах.

Проблема с другой адресацией файлов, которую я решил с помощью этих команд:

\newcommand{\winlogo}{D:/logo/}

\newcommand{\linlogo}{/media/DATA/logo/}


\includegraphics{\winlogo logo_bw}

Как предоставить эту функцию:

if(parameter==windows){adress:=D:/logo/}

elseif(parameter=linux){adress:=/media/DATA/logo}

else{error}

Ответы [ 2 ]

4 голосов
/ 03 декабря 2009

Я тоже столкнулся с этой проблемой и обнаружил, что жесткое кодирование путей - абсолютно ужасная идея. Кроме того, поддержание синхронизации этих каталогов со временем станет проблемой, когда ваши проекты начнут расти.

Способ, которым я решил это, заключался в том, чтобы поместить все в контроль версий (мне нравится git, ваш пробег может отличаться).

Затем я создал папку images, поэтому моя иерархия папок выглядит следующим образом:

Рабочий-Dir | - изображения / | - myfile.tex | - nextfile.tex

Затем в преамбуле моих документов: \usepackage{graphicx} и \graphicspath{{images/}}, которая говорит латексу искать папку с именем images, а затем искать графику внутри папки.

Затем я делаю свою работу на компе, откладываю свою законченную работу обратно в репо, и когда я переключаю компьютеры, я просто вытаскиваю из своего репо. Таким образом, все синхронизируется, независимо от того, на каком компьютере я работаю.

Обработка исходного текста текс как исходного кода значительно улучшила мой рабочий процесс и эффективность. Я бы предложил аналогичные меры для тех, кто имеет дело с источником латекса.

EDIT

От: http://en.wikibooks.org/wiki/LaTeX/Importing_Graphics

Память для хранения

Есть способ сообщить LaTeX, где искать изображения: например, он может быть полезным, если вы храните изображения централизованно для использования во многих различных документы. Ответ в команда \ graphicspath, которую вы предоставляете с аргументом, дающим имя дополнительный путь к каталогу, который вы хотите поиск, когда файл использует \ includegraphics команда, вот некоторые примеры:

\graphicspath{{c:\mypict~1\camera}}

\graphicspath{{/var/lib/images/}}

\graphicspath{{./images/}}

\graphicspath{{images_folder/}{other_folder/}{third_folder/}}

см. Пожалуйста http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.pdf

Как вы могли заметить, в первом Пример, который я использовал «сейф» (MS-DOS) форма папки Windows MyPictures потому что это плохая идея использовать имена каталогов, содержащие пробелы. Используя абсолютные пути, \ graphicspath делает ваш файл менее переносимым, при использовании относительных путей (например, последний пример), у вас не должно быть никаких проблема с переносимостью, но помни не использовать пробелы в именах файлов. В качестве альтернативы, если вы используете PDFLaTeX, вы можете использовать пакет гриффил, который затем позволит вам используйте пробелы в именах файлов.

Третий вариант должен вас устроить - просто укажите несколько путей для \graphicspath Интересно, будет ли LaTeX завершаться неудачно, если вы просто включите в него все свои пути (один для изображений, один для журналов в Linux, один для ваших логотипов на windows)?

0 голосов
/ 11 декабря 2009

Слюда, еще раз спасибо, ваш совет работает правильно!

Я тестировал этот код в преамбуле, в файле .sty он не работает:

\usepackage{graphicx}
\graphicspath{{/media/DATA/logo/}{d:/logo/}{img/}}

где

/media/DATA/logo/ - адрес к каталогу с логотипами на смонтированном разделе в Linux
d:/logo/ - это адрес того же каталога в Windows
img/ - адрес изображений для текущего документа в реальном рабочем каталоге

и этот код в документе:

\includegraphics{logo_zcu_c} из logo dir
\includegraphics{hvof} из img/ dir`

...