自动定制不同回忆录的封面

自动定制不同回忆录的封面

我需要创建几份格式相同的回忆录。对于每份文档,我想自定义封面的几个功能,例如背景颜色。我试图通过在文档的序言中定义一个对文档类型\doctype(假设类型一或类型二)进行编码的变量,并使用命令\IfStrEqCase将文档类型映射到适当的颜色,来自动自定义封面。这是我简化的 MWE:

我的模板.tex

\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{xstring}
\usepackage{tikz}
\usepackage{lipsum}

我的封面

\newcommand\CoverBackgroundColor{%
\IfStrEqCase{\doctype}{
    {one}{red}
    {two}{green}
    [gray]
}}

\begin{tikzpicture}[overlay, remember picture]
\fill[\CoverBackgroundColor] (current page.south west) rectangle (current page.north east);
\end{tikzpicture}
\thispagestyle{empty}
\clearpage

doc1.tex

\documentclass[12pt,a4paper,oneside]{memoir}

\input{mytemplate}
\newcommand{\doctype}{one}

\begin{document}

\input{mycover}
\lipsum[1]

\end{document}

doc2.tex

\documentclass[12pt,a4paper,oneside]{memoir}

\input{mytemplate}
\newcommand{\doctype}{two}

\begin{document}

\input{mycover}
\lipsum[2]

\end{document}

我原本期望的封面doc1是红色的,的封面doc2是绿色的,但是我收到了这个错误:

<to be read again> 
1
l.9 \fill[\CoverBackgroundColor]
                               (current page.south) rectangle (current page....

? 

我在这里遗漏了什么?

答案1

问题\CoverBackgroundColor不是扩展到颜色,而是扩展到一组指令印刷颜色名称。

将代码替换mycover.tex

%%% mycover.tex
\ExplSyntaxOn
\NewExpandableDocumentCommand\CoverBackgroundColor{}
 {
  \str_case_e:nnF {\doctype}
   {
    {one}{red}
    {two}{green}
   }
   {gray}
 }
\ExplSyntaxOff

\begin{tikzpicture}[overlay, remember picture]
\fill[\CoverBackgroundColor] (current page.south west) rectangle (current page.north east);
\end{tikzpicture}
\thispagestyle{empty}
\clearpage
%%%

想要做的事\include{mytemplate}。使用\input

相关内容