%20en%20el%20paquete%20dependiendo%20de%20la%20opci%C3%B3n%20de%20clase%20de%20documento%3F.png)
Soy nuevo y este es mi primer post. Busqué en el sitio y no pude encontrar la respuesta a mi pregunta. Si hay una pregunta duplicada que no encontré, hágamelo saber.
Tengo una plantilla usando memoir
class y la opción más utilizada es a4paper
o letterpaper
dependiendo a quién le envío el documento.
Tengo un archivo de estilo tipo mechón que define diferentes márgenes para a4paper
o letterpaper
.
\ProvidesPackage{memtufte}
\DeclareOption{a4paper}{%
\settrims{0pt}{0pt}%
\settypeblocksize{640pt}{310pt}{*}%
\setlrmargins{63.754pt}{*}{*}%
\setmarginnotes{16pt}{144pt}{0.7\baselineskip}%
}
\DeclareOption{letterpaper}{%
\settrims{0pt}{0pt}%
\settypeblocksize{600pt}{320pt}{*}%
\setlrmargins{64.1475pt}{*}{*}%
\setmarginnotes{16pt}{150pt}{0.5\baselineskip}%
}
\ProcessOptions\relax
... ... (and some other settings that are common for a4paper and letterpaper.
y en main.tex
el archivo escribo algo como lo siguiente,
\documentclass[letterpaper,11pt,article,twoside]{memoir}
\usepackage[letterpaper]{memtufte}
o
\documentclass[a4paper,11pt,article,twoside]{memoir}
\usepackage[a4paper]{memtufte}
Esto funciona; pero tengo que cambiar las opciones de clase y paquete para mantenerlas iguales.
Entonces, mi primera pregunta es cómo puedo reescribir el paquete de tal manera que simplemente pueda usarlo
\usepackage{memtufte}
en el archivo principal y el margen se establezca correctamente según la opción de clase.La segunda pregunta es si esto se puede generalizar a alguna opción de clase (A, B, C, ...), por ejemplo,
if class option is A, then do something, if class option is B and C, do something else, if class option is C, do another thing, ...
Gracias.
Respuesta1
\ProcessOptions
también lee las opciones globales (las opciones configuradas en \documentclass
). De este modo,
\documentclass[a4paper]{memoir}
\usepackage{memtufte}
también activa el manejo de opciones para a4paper
in memtufte
. Esto se puede verificar fácilmente agregando \typeout{}
llamadas en el código de opción, por ejemplo:
\DeclareOption{a4paper}{%
...%
\typeout{memtufte:a4paper}%
}
Entonces la consola y .log
el archivo contienen la línea
memtufte:a4paper
Segunda pregunta
Por lo general, las opciones globales (opciones especificadas en \documentclass
) se pasan al paquete. Por lo tanto, el paquete puede leerlos mediante el modo normal \DeclareOption
:
\DeclareOption{A}{... do something ...}
\ProcessOptions\relax % or \ProcessOptions*