使用循环变量在循环中定义条件 (newif)

使用循环变量在循环中定义条件 (newif)

我想newif在循环中使用定义一组条件。循环变量应该成为条件名称的一部分。但是,当我尝试设置条件以及在一个循环中定义多个条件时,我遇到了麻烦。

当我尝试使用相同的代码结构定义第二个条件时,最终出现以下错误:Missing \endcsname inserted.。尝试设置 if 条件时也会发生同样的情况。

梅威瑟:

\documentclass{article}

\makeatletter
\count@=0
\loop
  \advance\count@ 1
  \expandafter\newif\csname ifrst@onlyheight\@Alph\count@\endcsname%
  %\expandafter\newif\csname ifrst@onlywidth\@Alph\count@\endcsname%
  %\csname rst@onlyheight\@Alph\count@ true\endcsname
  \csname rst@onlyheightAtrue\endcsname
\ifnum\count@<6
\repeat
\makeatother

\begin{document}

More code here.

\end{document}

答案1

\count@在处理过程中设置\newif

% latex.ltx, line 910:
\def\newif#1{%
  \count@\escapechar \escapechar\m@ne
    \let#1\iffalse
    \@if#1\iftrue
    \@if#1\iffalse
  \escapechar\count@}

改用\@tempcnta

不同的循环:

\documentclass{article}
\usepackage{expl3}

\ExplSyntaxOn
\int_step_inline:nnnn { 1 } { 1 } { 5 }
 {
  \exp_args:Nc \newif { ifrst@onlyheight \int_to_Alph:n { #1 } }
  \exp_args:Nc \newif { ifrst@onlywidth \int_to_Alph:n { #1 } }
  \use:c { rst@onlywidth \int_to_Alph:n { #1 } true }
 }
\ExplSyntaxOff

\begin{document}

\makeatletter\ttfamily\noindent
\meaning\ifrst@onlyheightA \\
\meaning\ifrst@onlyheightB \\
\meaning\ifrst@onlyheightC \\
\meaning\ifrst@onlyheightD \\
\meaning\ifrst@onlyheightE \\
\meaning\ifrst@onlywidthA \\
\meaning\ifrst@onlywidthB \\
\meaning\ifrst@onlywidthC \\
\meaning\ifrst@onlywidthD \\
\meaning\ifrst@onlywidthE
\makeatother
\end{document}

在此处输入图片描述

相关内容