我有一个类似下面的乳胶文档
\documentclass{article}
\usepackage{graphicx}
\newcommand{\plott}[1]{
\begin{figure}
\includegraphics{#1}
\end{figure}
}
\begin{document}
\plott{"c:\\documents\\chart1.pdf"}
\plott{"c:\\downloads\\chart2.pdf"}
\end{document}
现在,除了 chart1.pdf 和 chart2.pdf 之外,我还有文件 chart1.csv 和 chart2.csv(与这些图表位于同一文件夹中),其中包含制作图表的数据。
我想向 \plott 添加逻辑以将这些 csv 复制到第三个文件夹,这样当我编译文档时,我不仅可以获得一个文档,还可以获得一个包含所有输入数据的文件夹。latex 是否可以像这样复制外部文件?
答案1
你可以使用\immediate\write18
.tex 文件运行外部程序,因此
\newcommand{\plott}[2][]{
\immediate\write18{cp #2 plott}
\begin{figure}
\includegraphics[#1]{#2}
\end{figure}
}
(1)将在输出中包含#2,并且
(2)将其复制到plott
文件夹中。
此解决方案的要求:
(1)您正在使用类 Unix 操作系统。
(2)您的系统上安装了 TeX Live 发行版。
(3)plott
在主文件的同一目录中存在一个名为 的文件夹。如果您愿意,.tex
可以使用 自动创建它。\immediate\write18{mkdir plott}
一个最小的工作示例
我使用了来自 TeX Live 的两张图片,但你当然可以更改路径并使用其他文件:
\documentclass{article}
\usepackage{graphicx}
\newcommand{\plott}[2][]{
\immediate\write18{cp #2 plott}
\begin{figure}
\includegraphics[#1]{#2}
\end{figure}
}
\begin{document}
\plott{/usr/local/texlive/2020/texmf-dist/tex/latex/mwe/example-image-a.jpg}
\plott{/usr/local/texlive/2020/texmf-dist/tex/latex/mwe/example-image-b.jpg}
\end{document}