Latex 可以在计算机文件系统中复制外部文件吗

Latex 可以在计算机文件系统中复制外部文件吗

我有一个类似下面的乳胶文档

\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}

相关内容