自動客製化不同回憶錄的封面

自動客製化不同回憶錄的封面

我需要創作幾本相同格式的回憶錄。對於每個文檔,我想自訂封面的幾個功能,例如背景顏色。我試圖透過在文件的序言中定義一個\doctype對文件類型進行編碼的變數(假設鍵入一或類型二)來自動化封面的自訂,並使用\IfStrEqCase命令將文件類型對應為適當的顏色。這是我的簡化 MWE:

mytemplate.tex

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

mycover.tex

\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

文檔1.tex

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

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

\begin{document}

\input{mycover}
\lipsum[1]

\end{document}

文檔2.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

相關內容