如何将文件内容用作数字

如何将文件内容用作数字

我想创建一个包含 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当然,这里指的是梅尔·布鲁克斯的太空球

相关内容