关于“ifcase”语法的澄清

关于“ifcase”语法的澄清

我对 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,但我找不到任何相关的文档,所以我想在这里问。

  1. 为什么需要 % \ifcase\value{colorCounter}%?我以为 % 在 LaTeX 中用于注释某些内容?但是,我意识到当我删除 % 时,代码不起作用,并且出现错误,提示“maingray 未定义”。这里,maingray 和 mainblue 只是在代码中较高位置定义的颜色(我没有显示)。

  2. \fi该语法部分起什么\ifcase作用/代表什么?

  3. 我注意到\ifcase代码只有 6 个“maingrays”和 5 个“mainblues”。这是否意味着,假设我有第 12 个部分,那么第 12 个部分标题的颜色将打破交替模式,即它将是灰色而不是蓝色(正如它应该是的那样)?

如果这些问题无关紧要,我深感抱歉,但如果有人能回答,我将不胜感激:)

答案1

  1. 它正在注释掉一个空格,尝试排版
hello%
world

相比

hello
world

在您展示的代码中如果没有它,%它最终会调用\color{ maingray}并告诉您以空格开头的颜色名称未定义。

  1. \fi (如果向后)结束,\ifcase所以这里的最后一段是一个\else子句,所有大于给定列表的数字都将使用最终值。

  2. 是的,如上所述,这是使用,\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 的所有常规章节标题功能,例如防止在标题后分页)

相关内容