Erstellen einer LaTeX-Vorlage aus Daten in anderen Pfaden

Erstellen einer LaTeX-Vorlage aus Daten in anderen Pfaden

Ich möchte eine Vorlage erstellen, in der ich eine .tex-Datei ändern und verschiedene „Standardtexte“ (also Informationen, die sich nicht ändern) aus einem Netzwerk abrufen kann. Zunächst hätte ich eine .tex-Datei, die der Benutzer in einen neuen Ordner kopieren/einfügen und dann einige Dinge angeben kann:

%% User Data
hello world!

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

Dann würde ich die Präambel sowie die restlichen Informationen aus dem Vorlagenordner ziehen:

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

Die Ordnerstruktur, die ich mir vorstelle, wäre:

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

Wie man sieht, müsste ich die Präambel aufrufen und dann verschiedene Daten abrufen, die sich nicht im selben Ordner befinden. Kennt jemand eine einfache Möglichkeit, diese Informationen abzurufen oder vielleicht ein besseres Verwaltungssystem?

Antwort1

Das klingt nach einem neuen lokalen Paket oder einer neuen Klasse mit Zusatzdateien.

Erstellen Sie zunächst ein Verzeichnis, sagen wir mytemplate, entweder in Ihrem persönlichen lokalen Texmf-Baum, wenn Sie der einzige Benutzer sind, oder im lokalen Texmf-Baum der gesamten Site, oder verteilen Sie die endgültige Vorlage als Zip-Archiv mit Anweisungen, wie die Benutzer sie auf ihrem PC installieren müssen (in ihrem persönlichen oder im Texmf-Baum der gesamten Site). In meinem Fall unter Linux würde ich das mytemplateVerzeichnis entweder als erstellen

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

oder für den Site-weiten Zugriff als

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

Alles, was Sie in diese Ordner legen, wird dann gefunden, ohne dass ein expliziter Pfad erforderlich ist. Beachten Sie, dass das Site-weite lokale Verzeichnis normalerweise indiziert ist, sodass Sie den Index nach dem Hinzufügen von Dateien zum Verzeichnis neu erstellen müssen. Unter Linux rufe ich es texhashals Root (Administrator) auf.

Die gemeinsamen Präambel- und Dokumenteinstellungen werden in eine Stildatei umgewandelt mytemplate.styoder, wenn Sie Kontrolle über die geladene Dokumentklasse benötigen,eine Klassendateimytemplate.clsDie konkreten Dokumente beginnen Sie dann mit \documentclass{mytemplate}(bezieht sich auf mytemplate.cls) oder mit \documentclass{anyclass}\usepackage{mytemplate}(bezieht sich auf mytemplate.sty).

Bestimmte Benutzerdaten können mithilfe von Befehlen gesammelt werden, die sie für die spätere Verwendung speichern, oder als Parameter für Befehle, die sie sofort verarbeiten. Für den ersten Ansatz verwenden Sie den LaTeX- \authorBefehl als Modell:

\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`

Wenn das Dokument enthält \data{42}, können Sie später in Ihrer Stil- oder Klassendatei als auf den Wert zugreifen \@data.

Beim zweiten Ansatz ruft das Dokument ein Makro auf \processdata{42}und die Daten werden sofort verarbeitet.

Die Textfragmente können Sie als direkten TeX-Code bereitstellen, der dann eingefügt werden soll. Das Dokument enthält dann eine Zeile

\input{myintroduction}

Wenn myintroduction.texes sich im texmf-Baum befindet, wird es gefunden, ohne dass der vollständige Pfad angegeben werden muss. Alternativ können Sie mytemplate.clseinen mytemplate.styBefehl (ggf. mit einigen Parametern) angeben \Introduction, der bestimmte Dinge tut und entweder den Intro-Text wörtlich enthält oder \inputselbst eine Anweisung verwendet.

verwandte Informationen