\includegraphics{\input{|shell 命令}}

\includegraphics{\input{|shell 命令}}

我想定义一个命令“\foo”,它输出 shell 命令的结果,例如:

\newcommand{\foo}[1]{\input{|"#1"}}

这是可行的,除非我尝试在 \includegraphics 上下文中使用此命令:

\includegraphics{\foo{command attr1 attr2}}

在哪里命令是一个输出文件名的 shell 命令。例如,使用命令:“echo im”和 im.png 同一目录中的图像,我收到此错误:

! Undefined control sequence.
\filename@simple ...#2\\}\fi \edef \filename@base 
                                                  {#1}
l.14 \includegraphics{\foo{echo im}}

答案1

如果您通过将 shell 命令移到图形包含之前来使文件名解析器更容易一些(我当时并没有计划使它工作:-),它就会起作用:

\documentclass{article}

\usepackage{graphicx}

\makeatletter
\long\def\eatspace#1 {#1}
\def\foo#1{\edef\result{\expandafter\eatspace\@@input|"#1;echo \string\\noexpand"}}
\makeatletter

\begin{document}



\foo{echo ug}
\includegraphics{\result}

\end{document}

然后

pdflatex --shell-escape gr44

报告:

...
 <ug.png, id=1, 264.23718pt x 288.3272pt> <use ug.png> [1{/usr/local/texlive/20
13/texmf-var/fonts/map/pdftex/updmap/pdftex.map} <./ug.png>] (./gr44.aux) )</us
r/local/texlive/2013/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on gr44.pdf (1 page, 9920 bytes).
Transcript written on gr44.log.

显示图片已包含在内

相关内容