Fiz um layout em LaTeX (geometria, margens, cabeçalhos, etc) e preciso ter vários documentos diferentes usando esse mesmo layout. Então, eu me pergunto se, em vez de copiar e colar a 'parte do layout' do código, eu poderia criar algo como um modelo e usá-lo em todos os documentos que possuo.
Eu procurei por um tempo, mas não consegui encontrar nada útil sobre isso. É possível? E, se sim, como isso pode ser feito?
Responder1
Há uma boa introduçãoLaTeX para criadores de classes e pacotescom muitas informações sobre esse tema.
Conforme declarado nos comentários, você pode escrever seu próprio arquivo de estilo ou até mesmo classe.
Só posso adivinhar qual seria a escolha apropriada para você, mas acho que você está almejando seu próprio arquivo de estilo.
Este é um estilo vazio mais ou menos inútil. Sinta-se à vontade para preenchê-lo com seu preâmbulo. Claro, você não precisa daqueles comentários extensos no topo do seu arquivo, mas lembre-se: é melhor documentar suas ideias do que...
Este estilo deve ser salvo como empty.sty
. É claro que você deve dar ao seu estilo um nome mais literal. Mas se você alterar o nome do arquivo, certifique-se de alterar esse nome no arquivo também, principalmente no comando \ProvidesPackage
. Caso contrário, o LaTeX gerará um erro.
Eu defini uma nova variável booleana @draft
. É definido usando a opção de estilo draft
ou final
: \usepackage[draft]{empty}
definiria o modo rascunho.
Esta opção é entregue ao graphicx
-package, que é carregado por este estilo. (No seu caso: geometry
e assim por diante.) Cuidado também: em vez de ligar \usepackage
, você tem que dizer \RequirePackage
.
Você também pode definir alguns comandos e até usar a variável booleana definida, como mostrei no final deste arquivo.
EDIT: uma palavra final onde armazenar o arquivo. Em geral, seria uma boa idéia armazenar em algum lugar onde o LaTeX pesquisasse e encontrasse arquivos tex. Enquanto isso, eu sou a favor do TeXLive, então minhas sugestões são relacionadas ao TeXLive. TeXLive distingue entre três locais em seu sistema de arquivos, onde as entradas TeX e LaTeX podem ser armazenadas:
- O diretório principal, onde os distribuidores coletam todos os arquivos, eles colocam em sua distribuição. TeXLive armazena o caminho para este local em
$TEXMFMAIN
ou em$TEXMFDIST
. - Há um segundo local, que é dedicado ao gerente de uma instalação do TeXLive em todo o site. Neste local o gestor pode armazenar os templates, estilos, fontes e afins, que sejam relacionados à sua empresa. TeXLive armazena a localização em formato
$TEXMFLOCAL
. - Por fim, existe um local dedicado ao usuário individual. Neste local VOCÊ pode armazenar suas extensões privadas, incluindo meu
empty.sty
. :-) TeXlive armazena o caminho em$TEXMFHOME
.
Esses três locais foram estabelecidos naqueles bons e velhos tempos (tm) e são fortemente influenciados pelos sistemas UNIX em rede, onde era bastante comum ter uma instalação TeX para toda a empresa/universidade/... com centenas de máquinas e milhares de possíveis usuários.
Hoje em dia, com os nossos PCs pessoais, não há necessidade real de distinguir entre a instalação em todo o site pelo administrador do sistema e os arquivos privados do usuário, pois na maioria dos casos, o usuário é idêntico ao administrador do sistema.
No entanto, ainda há uma coisa que vale a pena mencionar. LaTeX faz uso intenso de muitos arquivos. Aumentaria drasticamente a carga do sistema - e especialmente a carga de IO - se o LaTeX pesquisasse diretamente no sistema de arquivos e, portanto, percorresse recursivamente todos os milhares de diretórios repetidamente, apenas para encontrar seu arquivo empty.sty
. Para proteger o sistema desse trabalho, o TeXLive mantém bancos de dados de arquivos instalados e tenta procurar a localização de um determinado arquivo em um desses bancos de dados em vez de pesquisar penosamente diretamente no sistema de arquivos. Pelo menos todos os arquivos em $TEXMFMAIN
, $TEXMFDIST
e $TEXMFLOCAL
devem ser inseridos em seus respectivos bancos de dados. Você pode atualizar os bancos de dados executando texhash
ou mktexlsr
.
Dado o fato de que a) há muitos usuários, para os quais um banco de dados individual teve que ser mantido, e b) um usuário geralmente não tem muitos arquivos de entrada TeX diferentes, o TeXlive geralmente é configurado para $TEXMFHOME
pesquisar o sistema de arquivos em vez de ter um banco de dados.
Infelizmente, depois de copiar o empty.sty
para o local desejado, você pode verificar se o seu sistema TeX encontrará o estilo executando
kpsewhich tex empty.sty
kpsewhich
deve imprimir o local correto do seu arquivo.
Caso contrário, você eventualmente esqueceu de atualizar o banco de dados ou colocou o arquivo no local errado.
Uma palavra final. Para manter alguma ordem no caos de milhares de arquivos, que pertencem a uma instalação completa do TeX, os mantenedores e distribuidores concordaram há muito tempo em um esquema único, o chamado TDS, oEstrutura de diretório TeX. Leia esse manual para ter uma ideia de como espalhar seus arquivos no local desejado. (DICA: deveria ser $TEXMFHOME/tex/latex/telmovianavaz/empty.sty
.)
(Eu também corrigi o erro de digitação que Christian Hupfer encontrou. Obrigado, Christian!)
%%%
%%% @(#) empty.sty -- emty style example
%%%
%%% Time-stamp: <2017-01-28 00:45:49 tmjb>
%%%
%%%
%%% @(#) $Id: $
%%% @(#) $Keywords: emty, style for TeX.SE $
%%%
%%%
%%% File: /Users/tmjb/Desktop/LaTeX-Test/empty.sty
%%% Project: TeX.SE
%%% Description: This is an empty style file, just to answer a
%%% question at TeX.SE
%%% Version: $Revision: $
%%% Author: tmjb -- Jan Braun <[email protected]>
%%% Maintainer: tmjb -- Jan Braun <[email protected]>
%%% Creation-Date: Sat Jan 28 2017 -- Jan Braun <[email protected]>
%%% Copyright: (c) 2017 Jan Braun
%%%
%%% ------------------------------------------------------ &Change Log ---
%%%
%%% $Log: $
%%% ============================================================ &Code ===
%%% ---------------------------------------------------- &Package Name ---
% \NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{empty}[2017/01/28 TeX.SE emty style example V 0.1.1]
%%% ------------------------------------------------------- &Variables ---
%% We need some variables, to store and indicate which options (see
%% later) are choosen ...
\newif\if@draft % for Option draft
%%% --------------------------------------------------------- &Options ---
%% Options are definid by the main package or for this special style
%% file. Just add them in square brackets like this:
%% \usepackage[final,foo,bar]{empty}
%% I advise, to avoid using final and draft in package related
%% options, as the are normally handed over from the main class
%% package options.
%%
%% ............................................................ &draft ...
%% Option final is per default defined by the main class package,
%% unless you specify draft. This style defines it for continuity
%% reasons. Draft and final should be mutualy exclusive
\DeclareOption{draft}{
\@drafttrue
\PassOptionsToPackage{draft}{graphicx}
}
%% ............................................................ &final ...
%% Option final is per default defined by the main class package,
%% unless you specifyraft. This style defines it for continuity
%% reasons. Draft and final should be mutualy exclusive
\DeclareOption{final}{
\@draftfalse
\PassOptionsToPackage{final}{graphicx}
}
%% ....................................................... &Undeclared ...
%% This one is for any option, which was not declared before.
\DeclareOption*{\OptionNotUsed}
%% Set the options.
\ExecuteOptions{draft}
\ProcessOptions\relax
%%% -------------------------------------------------------- &Messages ---
%% Print out some warning messages, while compiling the text.
\if@draft
\typeout{\MessageBreak empty.sty: WARNING! DRAFT-mode is in use! \MessageBreak }
\fi
%%% -------------------------------------------------------- &Packages ---
%%
%% To get all definitions of this style to work, we need some more
%% packages. They are automatically loaded here.
%%
\RequirePackage{graphicx}
%%% ------------------------------------------------------ &Definitions ---
%%% ........................................................ &Constants ...
%%%
%%% Define some consistent strings.
\def\@totalname{Summe}
%%%
%%% Userspace command, to change the value of the above defined string.
\newcommand{\totalname}[1]{\def\@totalname{#1}}%
%% Define a command, to print nonsense, but only in draft mode.
\if@draft
\newcommand{\foo}[1][bar]{foo #1 baz}
\else
\typeout{\MessageBreak empty.sty: WARNING! FINAL-mode is in use! \MessageBreak }
\fi
\endinput
%%% ============================================================= &EOF ===
%%% Local Variables:
%%% mode: LaTeX
%%% TeX-engine: luatex
%%% TeX-master: nil
%%% TeX-parse-self: t
%%% TeX-auto-save: t
%%% End: