同じ形式の回顧録をいくつか作成する必要があります。各ドキュメントについて、表紙のいくつかの特徴、たとえば背景色をカスタマイズしたいと考えています。ドキュメントのプリアンブルでドキュメント タイプ\doctype
(タイプ 1 またはタイプ 2 とします) をエンコードする変数を定義し、コマンドを使用して\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
。