TeXLive 中的输出目录 Asymptote

TeXLive 中的输出目录 Asymptote

asymptote和包如何asypictureB确定输出文件和工作目录?我尝试使用asypictureB和 TeXLive 来生成我的文件并将所有输出文件放到不同的目录中。对于 pdflatex,这可以通过 来完成-output-directory=dir option,并且*.asy文件位于 dir 文件夹中。但是asy.exe找不到此文件。我尝试按照此帖子让 TeX 知道工作目录:渐近线文件 并尝试了所有的选择

\begin{document}
\renewcommand\asydir{asytmp}
\asysetup{dir= xxx}
\begin{asypicture}{}
\end{asypicture}
\end{document}

它们似乎都不会影响工作目录。我还尝试使用 TexStudio 将 asymptote 命令更改为asy.exe dir/filename.asy,或包含-cd dir after asy.exe,但这些都不起作用。asy.exe 一直在搜索当前目录下的文件。

在 mac 下,我找到了一种解决方法,即修改 TexStudio 中的 pdflatex 命令以包含一系列 bash 命令:

sh -c "cp %.tex ~/asytmp/%.tex
& cd ~/asytmp/ && pdflatex -shell-escape -synctex=1 -interaction=nonstopmode 
%.tex
&& cd - && cp ~/asytmp/%.pdf %.pdf
&& cd ~/asytmp && find . \! -name '1' -delete"

但是当我按照相同的方式并在 Windows 下尝试使用 它时cmd /C "... | ... | ..." ,它不起作用,因为该cd dir命令在 Windows 下不起作用,并且所有内容似乎仍在当前目录下执行。

关于如何让它工作,您有什么想法吗?是否可以修改该~/.asy/config.asy文件?我甚至不知道 asymptote 和 asypictureB 包是否使用此配置文件。

答案1

我再次尝试,但该/asydir命令似乎干扰了 pdflatex 处理*.asy文件的方式,并出现错误“无法在文件上写入dir/*-noname-1.asy”。

事实证明,上面描述的 MacOS 中的解决方法在 Windows 中有效。只需要在不同代码之间继续使用“&”而不是“|”即可。

cmd /C "@echo off && pushd .
&& copy %.tex C:\localtexmf\tmp\%.tex & cd C:\localtexmf\tmp
&& pdflatex.exe --shell-escape -synctex=1 -interaction=nonstopmode %.tex
&& asy.exe *.asy
&& pdflatex.exe --shell-escape -synctex=1 -interaction=nonstopmode %.tex
&& popd
&& copy C:\localtexmf\tmp\%.pdf %.pdf"
| txs:///view

笔记:我将这些代码格式化为多行以便于阅读,但应该确保所有内容都写在 TeXStudio 的一行中。

相关内容