比较 \x 和 \value{section} 以及 if

比较 \x 和 \value{section} 以及 if

我想评估我的变量 \x(来自 foreach 循环)是否与我当前的节号相同。我试过

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz}
\usepackage{totcount}       
\regtotcounter{section}             % total amount of sections

\begin{document}

\begin{frame}
  \section{This is the first section} \label{sec:this_is_the_first_section}
        Some Text.
  \section{This is the second section} \label{sec:this_is_the_second_section}
        Some Text.
  \section{This is the third section} \label{sec:this_is_the_third_section}
        Some Text.

  \foreach \x in {1,...,\totvalue{section}}{
    \arabic{section} =  \x
      \ifx\x\value{section}
        check
      \else
        no                          
      \fi}
\end{frame}

\end{document}

但这总是返回“否”,而在最后一种情况下它应该返回“检查”。我是否必须使用不同形式的“if”-case(我试过

   \ifnum{\value{\x}}={\value{section}} 

但编译不通过)还是我试图比较无法这样比较的不同变量类型?比较值的正确命令行是什么?

答案1

你没有\ifnum正确使用。它可能有效,但根据情况,也可能无效。正确的用法是

\ifnum\x=\value{section}

这样,第一个数字\x由 分隔,=而第二个数字\value{section}不需要分隔,因为它具有内部 TeX 计数。

答案2

从不同的编程语言转到 TeX 可能是一种艰难的体验,因为 TeX 中的条件有点奇怪。

如果你想比较两个整数,要使用的条件是\ifnum需要语法

\ifnum<integer><relation><integer>

没有将整数括起来,因此你的测试应该是

\ifnum\x=\value{section}

%(如果您不想在换行符处留有空格,请不要忘记尾随)。

请注意,这\value不是一个通用的“提取器”,而是一个非常具体的 LaTeX 宏,只有当它的参数是一个用 定义的 LaTeX 计数器时,它才有效\newcounter,其扩展是“抽象”值。

类似地,\arabic是一个用于访问计数器的十进制表示的 LaTeX 宏;它可能<integer>可以在这里使用,但由于多种原因(主要原因是终止规范)不推荐。

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz}
\usepackage{totcount}
\regtotcounter{section}             % total amount of sections

\begin{document}

\begin{frame}

\section{This is the first section} \label{sec:this_is_the_first_section}
Some Text.

\section{This is the second section} \label{sec:this_is_the_second_section}

Some Text.

\section{This is the third section} \label{sec:this_is_the_third_section}
Some Text.

\foreach \x in {1,...,\totvalue{section}}{%
  \ifnum\x=\value{section}%
    check
  \else
    no
  \fi
}

\end{frame}

\end{document}

注意我添加的;带有和 的%行将添加一个空格,因为行尾没有被屏蔽。最后一个空格将消失,因为它位于段落末尾。checkno

在此处输入图片描述

相关内容