我对 LaTeX 还不太熟悉,主要用它来写作业。从那时起,我也开始接受挑战,用 LaTeX 重写我的简历,而且我非常喜欢 twentyseondscv 模板,可以在这里。
该模板大部分都非常用户友好,即使对于像我这样的新手来说也是如此,但我在理解一小部分代码时遇到了问题——简历将部分标题的颜色在灰色和蓝色之间交替(从灰色开始),我复制了以下执行此操作的代码部分:
% Command to create the rounded boxes around the section titles
\newcommand*\round[2]{
\tikz[baseline = (char.base)]\node[rectangle, rounded corners, fill=#2, text = white](char){#1};
}
\newcounter{colorCounter}
\newcommand{\sectioncolor}[1]{
{
\round{#1}{
\ifcase\value{colorCounter}%
maingray\or
mainblue\or
maingray\or
mainblue\or
maingray\or
mainblue\or
maingray\or
mainblue\or
maingray\or
mainblue\else
maingray\fi
}
}
\stepcounter{colorCounter}
}
\renewcommand{\section}[1]{
{
\color{gray}
\Large\sectioncolor{#1}
}
}
我只是对语法有一些疑问ifcase
,但我找不到任何相关的文档,所以我想在这里问。
为什么需要 %
\ifcase\value{colorCounter}%
?我以为 % 在 LaTeX 中用于注释某些内容?但是,我意识到当我删除 % 时,代码不起作用,并且出现错误,提示“maingray 未定义”。这里,maingray 和 mainblue 只是在代码中较高位置定义的颜色(我没有显示)。\fi
该语法部分起什么\ifcase
作用/代表什么?我注意到
\ifcase
代码只有 6 个“maingrays”和 5 个“mainblues”。这是否意味着,假设我有第 12 个部分,那么第 12 个部分标题的颜色将打破交替模式,即它将是灰色而不是蓝色(正如它应该是的那样)?
如果这些问题无关紧要,我深感抱歉,但如果有人能回答,我将不胜感激:)
答案1
- 它正在注释掉一个空格,尝试排版
hello%
world
相比
hello
world
在您展示的代码中如果没有它,%
它最终会调用\color{ maingray}
并告诉您以空格开头的颜色名称未定义。
\fi
(如果向后)结束,\ifcase
所以这里的最后一段是一个\else
子句,所有大于给定列表的数字都将使用最终值。是的,如上所述,这是使用,
\else
因此给定列表上方的任何值都将生成maingray
如果您希望它交替显示灰色/蓝色,那么使用\ifodd
而不是会更简单\ifcase
,例如:
main\ifodd\value{colorCounter}gray\else blue\fi
还有多个缺失值%
,例如
\renewcommand{\section}[1]{
{
\color{gray}
\Large\sectioncolor{#1}
}
}
是
\renewcommand{\section}[1]{SPACE{SPACE\color{gray}IGNOREDSPACE\Large\sectioncolor{#1}SPACE}SPACE}
因此添加多个空格标记(并删除 LaTeX 的所有常规章节标题功能,例如防止在标题后分页)