Команда \displaygraphics[width-1in]{figure=some_fig.pdf}
отобразит графику. Иногда мне нужно выполнить набор, когда у меня нет доступных графических файлов, поэтому я хочу сделать что-то вроде:
\renewcommand{\includegraphics}[1][]{\verb|#2|}
Цель состоит в том, чтобы просто отобразить имя используемого файла, а не пытаться отобразить графику. Обратите внимание, что имена графики имеют подчеркивания, поэтому я хотел бы что-то вроде дословного. Поэтому команда
\renewcommand{\includegraphics}[1][]{#2}
не работает.
Конечно, решение выше тоже не работает, так как \verb
его нельзя использовать таким образом внутри \renewcommand
. Как мне это сделать?
решение1
Причина, по которой ваше переопределение не работает, заключается в том, что вы указываете неправильное количество аргументов в \renewcommand
. Если я правильно понял ваш вопрос, вам просто нужны заполнители имен файлов для ваших изображений. Вот пример:
\documentclass{article}
\usepackage[]{graphicx}
\renewcommand\includegraphics[2][]{\begin{center}\texttt{\detokenize{#2}\end{center}}
\begin{document}
\begin{figure}
\includegraphics[width=\linewidth]{Path/to/your/image/file}
\caption{When I finally get the file this will be a cool image}
\end{figure}
\end{document}
В качестве альтернативы вы можете использовать [demo]
опцию graphicx
which заменит любую \includegraphics
команду черным ящиком, как показано ниже. В этом случае, конечно, вы не получите распечатанных имен файлов, но вам также не нужно переопределять \includegraphics
.
решение2
В вашем коде есть ряд ошибок:
\renewcommand{displaygraphics}[1][]{\verb|#2|}
Первый аргумент
\renewcommand
должен быть именем макроса (с обратной косой чертой (исправлено в вопросе).Команда для переопределения
\includegraphics
(исправлена в вопросе)Число аргументов должно быть 2, а не 1: когда следует еще одна пара скобок, содержимое представляет собой значение по умолчанию необязательного аргумента, которое обозначено
#1
в тексте замены как ; вам также нужен обязательный аргумент, то есть два.\verb
не может использоваться в аргументе другого макроса.
Решение:
\renewcommand{\includegraphics}[2][]{\texttt{\detokenize{#2}}}
Это также позволит использовать подчеркивания.
решение3
А как насчет первой проверки \IfFileExists
, и если она уже есть, просто \includegraphics
или как-то иначе, для подчеркиваний и длинных путей, а также в стиле телетайпа, лучше использовать \url
?
\documentclass[twocolumn]{article}
\usepackage{url}
\usepackage{graphicx}
\parskip1em
\newcommand\extimg[1]{
\IfFileExists{#1}
{\includegraphics[width=.5\linewidth]{#1}}
{\fboxsep1em\fbox{\parbox{\dimexpr.5\linewidth-2em}{\url{#1}}}}}
\begin{document}
Some already made image:
\extimg{/usr/local/texlive/2015/texmf-dist/tex/latex/mwe/example-image-a.jpg}
Some image to do:
\extimg{/home/Richard/my_funny/proyect/more_carpets/and_more/images/todo_tomorrow/my_image.jpg}
\end{document}