Criando um modelo LaTeX a partir de dados em outros caminhos

Criando um modelo LaTeX a partir de dados em outros caminhos

Quero criar um modelo onde eu possa modificar um arquivo .tex e fazer com que ele extraia vários "boilerplates" (ou seja, informações que não mudam) de uma rede. Primeiramente, eu teria algum .tex onde o usuário irá copiar/colar em uma nova pasta e então especificar algumas coisas:

%% User Data
hello world!

%% Initialize document
\input{boilerplate/Preamble} %<----This folder would be located like C://User/etc,...

Então, eu teria o Preâmbulo extraído da pasta Template, bem como as informações restantes:

%% Select class
\documentclass[10pt]{article}

%% Packages
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{setspace}
\usepackage{siunitx}
\usepackage{lastpage}
\usepackage{newtxmath}
\usepackage{newtxtext}
\usepackage{textcomp}
\usepackage{longtable}
\usepackage{footnote}
\usepackage{multirow}
\usepackage{amssymb,amsmath,mathtools}
\usepackage{graphicx}
\usepackage[final]{pdfpages}
\usepackage{csvsimple}
\usepackage{grffile}
\usepackage{booktabs}
\usepackage[justification=centering]{caption}
\usepackage{longtable}
\usepackage{xcolor}
\usepackage{enumitem}
\setenumerate[1]{label=\thesection.\arabic*.}
\setenumerate[2]{label*=\arabic*.}
\usepackage[hyphens]{url}
\usepackage{breakurl} 
\usepackage[bookmarksnumbered]{hyperref}
\hypersetup{%
colorlinks=true,% hyperlinks will be coloured
citecolor=blue, % hyperlink text will be blue  
linkcolor=blue,% hyperlink text will be blue
linkbordercolor=blue,% hyperlink border will be blue
filecolor=blue,
urlcolor=blue,
breaklinks = true,
hypertexnames=true,
}
\usepackage[nameinlink]{cleveref}

%% Begin Document
\begin{document}
\input{boilerplate/Introduction} % Need path
\input{boilerplate/DetailedEquipmentInformationandRequirements} % Need path
\input{boilerplate/ProductInformation} % Need path
\input{boilerplate/SupplierScopeofWork} % Need path
\appendix
\include{boilerplate/Appendices} % Need path
\end{document}

A estrutura de pastas que imagino seria:

Template
-Boilerplate
--Introduction.tex
--DetailedEquipmentInformationandRequirements.tex
Project 1
-Compiler 1 .tex file
-Image Folder
Project 2
-Compiler 2 .tex file
-Image Folder

Como você pode ver, eu precisaria chamar o Preâmbulo e depois chamar vários dados que não estão na mesma pasta. Alguém conhece uma maneira fácil de obter essas informações ou talvez um sistema de gerenciamento melhor?

Responder1

Parece um novo pacote ou classe local, com arquivos auxiliares.

Primeiro, crie um diretório, digamos mytemplate, em sua árvore texmf local pessoal, se você for o único usuário, ou na árvore texmf local em todo o site, ou distribua o modelo final como um arquivo zip com instruções sobre como as pessoas devem instalar em seu PC (em seu texmf-tree pessoal ou em todo o site). No meu caso, no Linux, eu criaria o mytemplatediretório como

$(kpsewhich -var TEXMFHOME)/texmf/tex/latex/mytemplate

ou para acesso em todo o site como

$(kpsewhich -var TEXMFLOCAL)/tex/latex/mytemplate

Tudo o que você colocar nessas pastas será encontrado sem a necessidade de um caminho explícito. Observe que o diretório local de todo o site geralmente é indexado, portanto, é necessário reconstruir o índice após adicionar arquivos ao diretório. No Linux, eu chamo texhashcomo root (admin).

As configurações comuns do preâmbulo e do documento tornam-se um arquivo de estilo mytemplate.styou, se você precisar de controle sobre a classe do documento carregada,um arquivo de classemytemplate.cls. Em seguida, você inicia os documentos específicos com \documentclass{mytemplate}(refere-se a mytemplate.cls) ou com \documentclass{anyclass}\usepackage{mytemplate}(refere-se a mytemplate.sty).

Dados específicos do usuário podem ser coletados usando comandos que os armazenam para uso posterior ou como parâmetros para comandos que os processam imediatamente. Para a primeira abordagem, use \authoro comando do LaTeX como modelo:

\newcommand\@data{} % if it is ok that no data is provided
% or alternatively
\newcommand\@data{\@latex@warning@no@line{No \noexpand\data given}} % gives a warning if the data is needed but has not provided
\newcommand\data[1]{\renewcommand\@data{#1}} % Store the argument under the name `\@data`

Se o documento contiver \data{42}, você poderá acessar posteriormente o valor em seu estilo ou arquivo de classe como \@data.

Na segunda abordagem o documento chama uma macro \processdata{42}e os dados são processados ​​imediatamente.

Em relação aos fragmentos de texto, você pode fornecê-los como código TeX direto a ser incluído. O documento então tem uma linha

\input{myintroduction}

Se myintroduction.texestiver localizado na árvore texmf, será encontrado sem a necessidade de fornecer o caminho completo. Alternativamente, seu mytemplate.clsou mytemplate.stypode fornecer um comando \Introduction(talvez com alguns parâmetros) que faz algumas coisas específicas e contém o texto de introdução literalmente ou usa uma \inputinstrução em si.

informação relacionada