Crear una plantilla LaTeX a partir de datos en otras rutas

Crear una plantilla LaTeX a partir de datos en otras rutas

Quiero crear una plantilla donde pueda modificar un archivo .tex y hacer que extraiga varios "repetitivos" (es decir, información que no cambia) de una red. En primer lugar, tendría algo de .tex donde el usuario copiará/pegará en una nueva carpeta y luego especificará algunas cosas:

%% User Data
hello world!

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

Luego, sacaría el Preámbulo de la carpeta Plantilla, así como la información restante:

%% 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}

La estructura de carpetas que imagino sería:

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

Como puede ver, necesitaría llamar al Preámbulo y luego llamar a varios datos que no están en la misma carpeta. ¿Alguien conoce una manera fácil de solicitar esta información o quizás un mejor sistema de gestión?

Respuesta1

Esto suena como un nuevo paquete o clase local, con archivos auxiliares.

Primero, cree un directorio, digamos mytemplate, ya sea en su árbol texmf local personal si será el único usuario, o en el árbol texmf local de todo el sitio, o distribuya la plantilla final como un archivo zip con instrucciones sobre cómo las personas deben instalarlo. en su PC (en su personal o en el árbol texmf de todo el sitio). En mi caso, en Linux, crearía el mytemplatedirectorio como

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

o para acceso a todo el sitio como

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

Todo lo que coloques en estas carpetas se encontrará sin necesidad de una ruta explícita. Tenga en cuenta que el directorio local de todo el sitio generalmente está indexado, por lo que debe reconstruir el índice después de agregar archivos al directorio. En Linux, llamo texhashcomo root (admin).

El preámbulo común y la configuración del documento se convierten en un archivo de estilo.mytemplate.sty o, si necesita control sobre la clase de documento cargado,un archivo de clasemytemplate.cls. Luego comienza los documentos específicos con \documentclass{mytemplate}(se refiere a mytemplate.cls) o con \documentclass{anyclass}\usepackage{mytemplate}(se refiere a mytemplate.sty).

Se pueden recopilar datos de usuario concretos mediante comandos que los almacenan para su uso posterior o como parámetros de comandos que los procesan inmediatamente. Para el primer enfoque, utilice el comando de LaTeX \authorcomo 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`

Si el documento contiene \data{42}, luego podrá acceder al valor en su archivo de estilo o clase como \@data.

En el segundo enfoque, el documento llama a una macro \processdata{42}y los datos se procesan inmediatamente.

En cuanto a los fragmentos de texto, puede proporcionarlos como código TeX directo para incluirlos. El documento tiene entonces una línea

\input{myintroduction}

Si myintroduction.texestá ubicado en el árbol texmf, se encontrará sin tener que dar la ruta completa. Alternativamente, su mytemplate.clso mytemplate.stypuede proporcionar un comando \Introduction(tal vez con algunos parámetros) que haga algunas cosas específicas y contenga el texto de introducción textualmente o use una \inputdeclaración en sí.

información relacionada