다양한 회고록의 앞표지를 자동으로 맞춤설정

다양한 회고록의 앞표지를 자동으로 맞춤설정

동일한 형식으로 여러 개의 회고록을 만들어야 합니다. 각 문서에 대해 앞 표지의 여러 기능(예: 배경색)을 사용자 정의하고 싶습니다. \doctype문서 유형을 인코딩하는 변수(예: 유형 1 또는 유형 2)를 문서의 서문에 정의하고 \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

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.

관련 정보