如果出现条件,则乳胶

如果出现条件,则乳胶

我有一个自动生成目录的 latex 模板(我的大学制作了这个模板)。他们后来改变了格式要求,但没有提供更新模板的帮助。

我需要做的是每当 #2 = 76 时添加“{\noindent Chapter \hfill Page\par}”。这有效,但是我在目录顶部看到 viii = 76。

我的代码:

\ifnum #2=76
     {\noindent Chapter \hfill Page\par}
 \fi

有些页码是阿拉伯数字(如 1、2、3、...76),有些是罗马数字(如 viii)。我的想法是,由于目录有罗马数字和阿拉伯数字,因此 ifnum () = () 会中断,只会转储原始文本(viii=76)。

有什么想法可能导致这种情况发生吗?

有没有办法将我的 if 语句与另一个检查嵌套,以在评估 #2 之前验证它是否是一个数字?

非常感谢!

定义代码:

    \renewcommand*\l@chapter[2]{%
    \newcounter{tocNum}
    \setcounter{tocNum}{76}

  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \setlength\@tempdima{1.5em}%
    \begingroup

%% My code
       \ifnum #2=76
         {\noindent Chapter \hfill Page\par}
       \fi
    
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode %\bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak\dotfill \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
      \penalty\@highpenalty
    \endgroup
  \fi}

答案1

你想比较字面上地第二个参数为76

首先:删除\newcounter\setcounter指令。你不需要这个(此外你也不想在每次调用时浪费一个新的计数器\l@chapter)。

加载pdftexcmds包并将代码更改为

\ifnum\pdf@strcmp{#2}{76}=\z@
  {\noindent Chapter \hfill Page\par}%
\fi

<rant>
我无法理解为什么一本书的目录页顶部应该有“章节”和“页面”。还有什么这些部分会是什么?他们是否担心阅读论文的人都是文盲?或者担心论文导师(我猜不是文盲)会误以为这些数字是学生应该为这些章节支付的金额?
</rant>

答案2

您可以用\ifnum稍微不同的方式来表述该条件:

\ifnum 76=0#2 
   {\noindent Chapter \hfill Page\par}
\fi

现在,如果#2是非数字参数,则 76 不等于零。如果它是数字参数(例如 5),则测试结果\ifnum 76=05为不成立。但\ifnum 76=076返回 true。

相关内容