В LaTeX есть способ включить имя файла изображения в заголовок?

У меня есть документ LaTeX с большим количеством рисунков, включенных из внешних файлов с \includegraphics{bla.pdf}. Рисунки выполнены в Inkscape. Все работает нормально. Однако иногда бывает сложно отслеживать все чертежи и их исходные файлы. Поэтому я ищу способ включить имя исходного файла в примере bla.pdf в заголовок. Не будучи экспертом по LaTeX, я не нашел способа автоматически получить доступ к строке имени файла из заголовка. Использование Google-foo тоже не дало результата. Есть ли способ сослаться на имя файла и включить его в заголовок, например \caption{A fancy drawing of bla (\filename}?


person Andre    schedule 17.09.2010    source источник
comment
Вы знаете о Tex, LaTeX и друзьях? Вопрос о латексе все еще актуален здесь, но вы можете получить более точные или быстрые ответы там.   -  person dmckee --- ex-moderator kitten    schedule 17.09.2010
comment
Если бы вы могли дать нам небольшой пример того, что вы сейчас делаете, мы могли бы предложить индивидуальное решение ...   -  person Brent.Longborough    schedule 18.09.2010


Ответы (2)


Вы можете записать имя файла изображения, исправив часть вложенных вызовов внутри \includegraphics:

введите описание изображения здесь

\documentclass{article}

\usepackage{graphicx,etoolbox}

\makeatletter
\patchcmd{\Gin@setfile}% <cmd>
  {\ProvidesFile}% <search>
  {\xdef\imgfilename{#3}\ProvidesFile}% <replace>
  {}{}% <success><failure>
\makeatother

\begin{document}

\begin{figure}
  \centering
  \includegraphics[width=.5\linewidth]{example-image}
  \caption{Image: \imgfilename}
\end{figure}

\end{document}

\imgfilename будет содержать имя файла, используемое в \includegraphics, только после его использования.

person Werner    schedule 16.09.2015

Переопределите \includegraphics. В случае отсутствия аргументов (ширина = 3 см, масштаб = 2 или что-то в этом роде) имеем

\let \saveinclude \includegraphics
\def \includegraphics#1{\def\filename{#1}\saveinclude{#1}}

Использование

\includegraphics{bla.pdf}
\caption{A fancy drawing of bla (\filename)}
person Alexey Malistov    schedule 20.09.2010
comment
Что делать, если у меня есть аргументы? Я также включил изображения внутри пользовательских команд в преамбулу. - person Jonathan Komar; 02.01.2015