Use o mesmo modelo em vários documentos

Use o mesmo modelo em vários documentos

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 draftou final: \usepackage[draft]{empty}definiria o modo rascunho.

Esta opção é entregue ao graphicx-package, que é carregado por este estilo. (No seu caso: geometrye 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:

  1. 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 $TEXMFMAINou em $TEXMFDIST.
  2. 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.
  3. 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, $TEXMFDISTe $TEXMFLOCALdevem ser inseridos em seus respectivos bancos de dados. Você pode atualizar os bancos de dados executando texhashou 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 $TEXMFHOMEpesquisar o sistema de arquivos em vez de ter um banco de dados.

Infelizmente, depois de copiar o empty.stypara o local desejado, você pode verificar se o seu sistema TeX encontrará o estilo executando

kpsewhich tex empty.sty

kpsewhichdeve 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:

informação relacionada