我尝试使用该includegraphics
命令和自定义命令将图像包含到我的 PDF 文件中,但是我遇到了一个问题,即 LaTeX 似乎无法找到我的系统中存在的文件。
以下是出现问题的行:
\includegraphics[width=0.6\textwidth]{\matlabgraph{rplot}}
这些是在类文件中定义的:
\newcommand{\matlabvalue}[1]{\input{\datadir{value/#1.dat}}}
\newcommand{\matlabgraph}[1]{\datadir{graph/#1.png}}
并\datadir
在命令行中定义:
pdflatex "\newcommand\datadir[1]{\detokenize{C:/Users/<user>/AppData/...}/#1}\input{D:/Users/<user>/path/to/tex}"
奇怪的是,\matlabvalue
命令运行正常,但\matlabgraph
命令不运行。它给出了以下错误:
LaTeX Error: File `C:/Users/<user>/AppData/.../graph/rplot.png` not found.
当我导航到错误中列出的目录时,我看到了该rplot.png
文件并且可以毫无问题地打开它。我能想到的唯一可能导致这种情况的问题是文件路径(在<user>
)中有一个波浪符号(~
)。但是,我希望\detokenize
命令行中的能够解决这个问题……因为它可以与\matlabvalue
命令一起使用。
有人知道这里发生了什么吗?我是否需要在将路径传递到之前清理路径\includegraphics
?
更新:我发现问题出在\matlabgraph
命令上。
我将这两行放入我的 tex 文件中:
\includegraphics{\datadir{graph/rplot.png}}
\includegraphics{\matlabgraph{rplot}}
第一行可以工作,但第二行会导致错误。考虑到这实际上是为什么会出现错误的\matlabgraph{rplot}
一种简写?\datadir{graph/rplot.png}
\includegraphics
\matlabgraph
答案1
此代码不起作用:
\usepackage{graphicx}
\begin{document}
\newcommand\myimage[1]{#1}
\newcommand\mymyimage[1]{\myimage{#1}}
\includegraphics[scale=.5]{\myimage{/usr/local/texlive/2014/texmf-dist/tex/latex/mwe/example-image-a.png}}
\includegraphics[scale=.5]{\mymyimage{/usr/local/texlive/2014/texmf-dist/tex/latex/mwe/example-image-b.png}}
\end{document}
这是因为命令尝试包含该文件{/usr/local/texlive/2014/texmf-dist/tex/latex/mwe/example-image-b.png}
,即它被视为单个东西。
进行以下更改可使代码正常工作:
\newcommand\mymyimage[1]{\myimage#1}
这是因为导致分组效果的额外花括号被删除了。
至少我是这么认为的。无论如何,它确实有效。