将数字转换为字符,然后在文件名中使用它

将数字转换为字符,然后在文件名中使用它

我正在尝试创建一个循环来打印出图像文件列表。所有这些图像文件都有一个这样的文件名:fa-x.jpg(其中 x 是 a - h 中的字符)。我创建了一个循环,但计数器变量没有正确转换为字符并导致错误。以下是目前的代码:

\count255 = 97
\loop
    \subsection*{Part (\char\number\count255)}
   \includegraphics[scale=0.7]{fa-\char\number\count255.jpg}
  \hfil\break
\ifnum\count255 < 104
\advance\count255 by 1
\repeat

我得到的错误:

LaTeX Warning: File `fa-\char 97.jpg' not found on input line 77.

因此,它不会将 97 转换为字符,因为它位于 \includegraphics 参数内。请记住,在上面的循环中,\subsection 行有效并打印出字符 a - h。

答案1

既然您声称自己解决了问题,我在这里回应 cfr 的评论。以下是一些解释:

  • 根据TeXBook\char用于打印所需的字符。因此,\char\ c h a r作为{fa-\char97.jpg}输入(但是它打印了一个“a” \subsection,不是吗?)
  • 通过索引处理计数/计数器是危险的。由于只有 256 个选择,您永远不会知道该计数/计数器是否可用。事实上,\count255是为输出例程保留的。甚至\count123更安全。(但仍然很危险。)

回到你的问题,如果\char没有用,

怎么\alph運作?

嗯,这确实是一项艰苦的工作

\ifcase #1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or n
\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else \@ctrerr \fi

还有其他选择吗?

当然,在输入中写^^61上字母“ ”。 (请注意,HEX61 = DEC97。)但不起作用。它实际上是加号。两者都不起作用。a^^\value{count}^^\value{count}\expandafter^\expandafter^\value{a}

如果我需要的话该怎么办^^\value{count}

至少你可以将你想要的任何内容打印到文件中,然后\input它就会打印出来。我不知道是否存在直接的方法。

答案2

答案是使用 LaTeX 计数器而不是 TeX 计数器。以下是使其工作的代码:

\documentclass[11pt, fleqn]{article}
\usepackage{graphicx}
\begin{document}

\newcounter{count}
\setcounter{count}{1}
\loop\ifnum\value{count} < 8
    \subsection*{Part (\alph{count})}
   \includegraphics[scale=0.7]{fa-\alph{count}.jpg}
  \hfil\break
\stepcounter{count}
\repeat

\end{document}

\alph{counter} 函数可用于计数器,我用它来将字符注入文件名。如果计数器为 1,则 alph{counter} 将返回“a”。

相关内容