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 的一行中。