LaTex 中的 If 命令

LaTex 中的 If 命令

我正在为课程编写一个项目,我想让每个部分在侧面都有不同的彩色图像。但要做到这一点,我必须做一个循环(我是这样认为的)来识别零件并进行相应的编程。我在网上找到了这个,但它没有给我任何东西

\documentclass{book}

\usepackage{ifthen}

\begin{document}
\newcommand{\PartRecognizer}[1]
  {
   \ifthenelse{\equal{#1}{1}}{Part 1}{}
   \ifthenelse{\equal{#1}{2}}{Part 2}{}
  }
\PartRecognizer{\thepart}

\end{document}

有任何想法吗?

答案1

默认\part枚举book.cls使用 进行设置\Roman{part}。也就是说,

\renewcommand \thepart {\@Roman\c@part}

然而,最好不要针对表示不是柜台,而是柜台本身。为此,我们将条件化为外观\value{part}

最后,由于您的宏似乎仅仅专用于零件的条件,因此将零件编号作为参数传递似乎是多余的。

\documentclass{book}

\newcommand{\PartRecognizer}{%
  Part
  \ifcase\value{part}%
      0%
  \or 1%
  \or 2%
  \else ?%
  \fi
}

\begin{document}

\part{First part}

\PartRecognizer

\end{document}

请注意,调用时部件计数器会增加\part。因此,就像最多计数器,其默认值为 0。

我在上面使用了“类似案例”的条件,因为您将以单个增量步进零件计数器,可能从 0 开始 - 效果\ifcase很好。

答案2

\equal中的测试比较\ifthenelse字符串,但你想比较数字。 所以

\documentclass{book}

\usepackage{ifthen}

\newcommand{\PartRecognizer}{%
   \ifthenelse{\value{part}=1}{Part 1}{}%
   \ifthenelse{\value{part}=2}{Part 2}{}%
}

\begin{document}

\PartRecognizer

\end{document}

请注意%注释字符,以避免输出中出现不必要的虚假空间。

这是可行的,但有几个缺陷,因为你不能用它来做类似的事情

\newcommand{\PartRecognizer}{%
   \ifthenelse{\value{part}=1}{duck}{}%
   \ifthenelse{\value{part}=2}{cookiemonster}{}%
}

进而

\includegraphics{\PartRecognizer}

在您想要显示图形的地方。这将需要更多笨拙的代码。

这是一个更简单的实现,其中添加图像名称很简单。代码的第一部分用于将图像添加到部分起始页。

\documentclass{book}
\usepackage{graphicx,etoolbox,xparse}

\makeatletter
\preto\@endpart{%
  \vfil
  \begin{center}
  \includegraphics[height=.5\textheight]{\partimage}
  \end{center}
}
\makeatother

\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\partimage}{}
 {
  \int_case:nn { \value{part} }
   {
    {1}{duck}
    {2}{cookiemonster}
    % add here file names for the following parts
   }
 }
\ExplSyntaxOff

\begin{document}

\part{Ducks}

\part{Monsters}

\end{document}

在此处输入图片描述

饼干怪兽图片来源:http://www.dailymail.co.uk/sciencetech/article-2428961/Want-cookie-Amazing-picture-underwater-animal-looks-like-Sesame-Street.html

相关内容