%20no%20pacote%20dependendo%20da%20op%C3%A7%C3%A3o%20de%20classe%20do%20documento%3F.png)
Sou novo e este é meu primeiro post. Procurei no site e não encontrei a resposta para minha dúvida. Se houver uma pergunta duplicada que não encontrei, entre em contato.
Tenho um template usando memoir
class e a opção mais usada é a4paper
ou letterpaper
dependendo para quem envio o documento.
Eu tenho um arquivo de estilo semelhante a um tufo definindo margens diferentes para a4paper
or 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.
e no main.tex
arquivo eu escrevo algo como o seguinte,
\documentclass[letterpaper,11pt,article,twoside]{memoir}
\usepackage[letterpaper]{memtufte}
ou
\documentclass[a4paper,11pt,article,twoside]{memoir}
\usepackage[a4paper]{memtufte}
Isso funciona; mas tenho que alterar as opções de classe e pacote para mantê-las iguais.
Então minha primeira pergunta é como posso reescrever o pacote de tal forma que eu possa simplesmente usar
\usepackage{memtufte}
no arquivo principal e a margem será definida corretamente de acordo com a opção de classe.A segunda questão é se isso pode ser generalizado para qualquer opção de classe (A, B, C, ...), por exemplo,
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, ...
Obrigado.
Responder1
\ProcessOptions
também lê as opções globais (as opções definidas em \documentclass
). Por isso,
\documentclass[a4paper]{memoir}
\usepackage{memtufte}
também aciona o tratamento de opções para a4paper
in memtufte
. Isto pode ser facilmente verificado adicionando \typeout{}
chamadas no código de opção, por exemplo:
\DeclareOption{a4paper}{%
...%
\typeout{memtufte:a4paper}%
}
Então o console e .log
o arquivo contém a linha
memtufte:a4paper
Segunda questão
Geralmente as opções globais (opções especificadas em \documentclass
) são passadas para o pacote. Assim, o pacote pode lê-los via normal \DeclareOption
:
\DeclareOption{A}{... do something ...}
\ProcessOptions\relax % or \ProcessOptions*