我想从文件中读取 foreach 循环的上限。我尝试了以下方法,但结果却出现了各种错误。
\documentclass{article}
\usepackage{tikz}
\begin{filecontents*}{foo}
42
\end{filecontents*}
\begin{document}
\foreach\x in {1,...,\input{foo}} {\x,}
\end{document}
我也尝试过将 保存\input{foo}
到命令中,然后将该命令名称作为 foreach 的上限。但这似乎没有帮助。
答案1
您可以使用catchfile
:
\documentclass{article}
\usepackage{tikz,catchfile}
\begin{filecontents*}{\jobname.dat}
42
\end{filecontents*}
\begin{document}
\CatchFileDef\upperlimit{\jobname.dat}{}
\foreach\x in {1,...,\upperlimit} {\x, }
\end{document}
(我对文件使用了不同的名称,以免破坏我的任何文件。)
答案2
如果您愿意将 foo 的内容更改为 latex 代码:
\documentclass{article}
\usepackage{tikz}
\begin{filecontents*}{foo}
\def\limit{42}
\end{filecontents*}
\begin{document}
\input{foo}
\foreach\x in {1,...,\limit} {\x,}
\end{document}
如果你只想要“42”,你可以使用:
\documentclass{article}
\usepackage{tikz}
\begin{filecontents*}{foo}
42
\end{filecontents*}
\begin{document}
\newread\io%
\openin\io=foo%
\read\io to\limit%
\closein\io%
\foreach\x in {1,...,\limit} {\x,}
\end{document}