Necesito crear varias memorias con el mismo formato. Para cada documento quiero personalizar varias características de la portada, por ejemplo el color de fondo. Estoy intentando automatizar la personalización de las portadas definiendo en el preámbulo de los documentos una variable \doctype
que codifica el tipo de documento (digamos tipo uno o tipo dos) y usando el \IfStrEqCase
comando para asignar el tipo de documento al color apropiado. . Este es mi MWE simplificado:
miplantilla.tex
\usepackage{fontspec}
\usepackage{xcolor}
\usepackage{xstring}
\usepackage{tikz}
\usepackage{lipsum}
micubierta.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}
Esperaba que la portada fuera doc1
roja y la portada fuera doc2
verde, pero aparece este error:
<to be read again>
1
l.9 \fill[\CoverBackgroundColor]
(current page.south) rectangle (current page....
?
¿Que me estoy perdiendo aqui?
Respuesta1
El problema es que \CoverBackgroundColor
esonoexpandirse a un color, sino a un conjunto de instrucciones paraimpresiónun nombre de color.
Reemplace el código mycover.tex
en
%%% 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
%%%
Túnoquiero hacer \include{mytemplate}
. Usar \input
.