Независимая от операционной системы адресация изображений

Благодаря тому, что на моем компьютере установлены 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 ответа

Решение

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

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

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

Working-Dir | - images/ |- myfile.tex |- nextfile.tex

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

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

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

РЕДАКТИРОВАТЬ:

От: 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, вы можете использовать пакетный grffile, который позволит вам использовать пробелы в именах файлов.

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

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

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

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

где

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

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

\includegraphics{logo_zcu_c} от logo реж
\includegraphics{hvof} от img/ dir`

Другие вопросы по тегам