他のパスのデータから LaTeX テンプレートを作成する

他のパスのデータから LaTeX テンプレートを作成する

1 つの .tex ファイルを変更して、ネットワークからさまざまな「定型文」(つまり、変更されない情報) を取得できるテンプレートを作成したいと考えています。まず、ユーザーが新しいフォルダーにコピー/貼り付けして、いくつかの情報を指定する .tex をいくつか用意します。

%% User Data
hello world!

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

次に、テンプレート フォルダー内からプレアンブルと残りの情報を取得します。

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

私が想定しているフォルダ構造は次のようになります。

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

ご覧のとおり、プリアンブルを呼び出して、同じフォルダーにないさまざまなデータを呼び出す必要があります。これらの情報を呼び出す簡単な方法、またはより優れた管理システムを知っている人はいませんか?

答え1

これは、補助ファイルを含む新しいローカル パッケージまたはクラスのようです。

まず、ディレクトリを作成します。これはmytemplate、あなたが唯一のユーザーである場合は、個人のローカル texmf ツリーに、またはサイト全体のローカル texmf ツリーに作成するか、最終テンプレートを zip アーカイブとして配布し、ユーザーが自分の PC にインストールする方法を指示します (個人またはサイト全体の texmf ツリーに)。私の場合、Linux では、mytemplate次のようにディレクトリを作成します。

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

またはサイト全体へのアクセスとして

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

これらのフォルダに入れたものは、明示的なパスを必要とせずに見つかります。サイト全体のローカル ディレクトリは通常インデックス化されるため、ディレクトリにファイルを追加した後はインデックスを再構築する必要があることに注意してください。Linux では、texhashroot (管理者) として呼び出します。

共通のプリアンブルとドキュメント設定はスタイルファイルになります。mytemplate.styまたは、ロードされたドキュメントクラスを制御する必要がある場合は、クラスファイルmytemplate.cls. 次に、特定の文書を\documentclass{mytemplate}(参照mytemplate.cls) または\documentclass{anyclass}\usepackage{mytemplate}(参照mytemplate.sty) で始めます。

特定のユーザー データは、後で使用するために保存するコマンド、またはデータをすぐに処理するコマンドのパラメータとして収集できます。最初のアプローチでは、LaTeX の\authorコマンドをモデルとして使用します。

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

ドキュメントに が含まれている場合は\data{42}、後で としてスタイル ファイルまたはクラス ファイルの値にアクセスできます\@data

2 番目のアプローチでは、ドキュメントがマクロを呼び出し\processdata{42}、データがすぐに処理されます。

テキストフラグメントに関しては、直接TeXコードとして提供することができます。その場合、文書には次の行が含まれます。

\input{myintroduction}

が texmf ツリーにある場合はmyintroduction.tex、完全なパスを指定しなくても見つかります。 または、mytemplate.clsまたは は、特定の処理を実行し、イントロ テキストをそのまま含むか、ステートメント自体を使用するmytemplate.styコマンド\Introduction(場合によってはいくつかのパラメーター付き)を提供することもできます\input

関連情報