如何获取 LaTeX 中所有预定义 \if 命令的列表?

如何获取 LaTeX 中所有预定义 \if 命令的列表?

我尝试用 LaTeX 进行一些编程,发现它\ifx是预定义的,因为我收到了以下错误:

\documentclass[10pt]{book}%
\newif\ifx
\xtrue
\begin{document}
\end{document}

然后我发现有一种方法可以从这个答案中检查命令是否存在:

我如何通过名称检查 Latex 或 Plain Tex 中的命令是否存在

使用它来检查\ifx

\documentclass[10pt]{book}%
\newcommand{\checkfor}[1]{%
  \ifcsname#1\endcsname%
    ... command '#1' exists ...%
  \else%
    ... command '#1' does not exist ...%
  \fi%
}
\begin{document}
\checkfor{ifx}\par
\end{document}

编译上述内容确实表明command \ifx exists

但是如何获取所有\ifXXXXX存在的 s 的列表?我需要\if在代码中使用大量 s 来自定义构建,并且需要创建大量新的布尔变量。如果有一个列表,我可以将其粘贴在我电脑旁边的墙上,并在使用新命令之前查看它,而不是每次都出现错误或必须使用代码进行检查。

答案1

\newif命令不检查条件是否已经存在;假设程序员\newif知道他/她在做什么。

如果您想要一个类似的界面\newcommand,请加载ifthen并使用\newboolean;在这种情况下

\newboolean{x}

会告诉你

! LaTeX Error: Command \ifx already defined.
               Or name \end... illegal, see p.192 of the manual.

etoolbox和也一样\newbool

您可以在 TeXbook 或 TeX by Topic 中找到原始条件列表。将 e-TeX 条件添加到其中

\ifdefined
\ifcsname
\iffontchar

在 e-TeX 手册 ( texdoc etex) 中,您可以找到完整的列表

在此处输入图片描述

已经加载的包可能已添加到列表中。

有些引擎也会添加到列表中;例如pdftex添加

\ifincsname
\ifpdfprimitive
\ifpdfabsnum
\ifpdfabsdim

条件\ifpdfprimitive\ifprimitiveXeTeX 中。同样,LuaTeX 有\ifprimitive\ifabsnum\ifabsdim。两个引擎共享\ifincsname

相关内容