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