该命令\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
它将用黑框替换任何\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}