![如何将文件内容用作数字](https://linux22.com/image/262656/%E5%A6%82%E4%BD%95%E5%B0%86%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9%E7%94%A8%E4%BD%9C%E6%95%B0%E5%AD%97.png)
我想创建一个包含 n 个图像的循环。数字 n 是帮助文件(由生成图像的应用程序创建)的唯一内容。
是否可以读取帮助文件的内容并将其用作数字变量来设置循环?
以下代码有效:
\def\cnt{\input{numberfile}}
\cnt
输出是数字(即文件的内容)。
以下代码不起作用:
\newcounter{cnt}
\setcounter{cnt}{\input{numberfile}}
\arabic{cnt}
错误表明输入不是数字(“缺少数字,视为零”)。
那么如何将输入文件转换为 LaTeX 数字?
答案1
一种方法是使用\read
一次读取文件中的一行
\documentclass{article}
\newcounter{cnt}
\newread\myread
\openin\myread=numberfile
\begin{document}
\read \myread to \zz
\setcounter{cnt}{\zz}
\arabic{cnt}
\end{document}
假设numberfile.tex
看起来像
33
答案2
没有\read
:
\documentclass{article}
\usepackage{catchfile}
\newcommand{\setcounterfromfile}[2]{% #1 = counter, #2 = file name
\CatchFileDef{\scfftemp}{#2}{\endlinechar=-1 }%
\setcounter{#1}{\scfftemp}}
\newcounter{cnt}
\setcounterfromfile{cnt}{numberfile}
\showthe\value{cnt}
如果numberfile.tex
包含唯一的一行12345
(一个很难猜的数字,因为它是众所周知的1),我们得到
> 12345.
1当然,这里指的是梅尔·布鲁克斯的太空球。