在多個文件中使用相同的模板

在多個文件中使用相同的模板

我在 LaTeX 中製作了一個佈局(幾何、邊距、標題等),我需要使用相同佈局的多個不同文件。所以我想知道是否可以創建類似模板的東西,並在我擁有的每個文件上使用它,而不是複製貼上程式碼的「佈局部分」。

我搜尋了一段時間但找不到任何有用的東西。是否可以?如果是這樣,該怎麼辦?

答案1

有一個很好的介紹供類別和套件編寫者使用的 LaTeX有很多關於該主題的資訊。

正如評論中所述,您可以編寫自己的樣式文件甚至類別。

我只能猜測,什麼是適合您的選擇,但我猜,您的目標是您自己的樣式檔案。

這是一種多礦石少無用的空風格。請隨意填寫您的序言。當然,您不需要在文件頂部添加大量註釋,但請記住:最好記錄您的想法,而不是...

該樣式必須另存為empty.sty.當然,您應該為您的樣式指定一個更逐字的名稱。但是,如果您更改文件的名稱,請務必在文件中也更改此名稱,尤其是在命令中\ProvidesPackage。否則 LaTeX 將拋出錯誤。

我定義了一個新的布林變數@draft。它是透過使用 style 選項來設定的draft,或final:\usepackage[draft]{empty}定義草稿模式。

此選項交給-package graphicx,並由該樣式載入。 (在您的情況下:geometry等等。)也要小心:\usepackage您必須說 ,而不是調用\RequirePackage

您也可以定義一些命令,甚至使用定義的布林變量,如我在本文件末尾所示的那樣。

編輯:最後一句話儲存文件的位置。一般來說,儲存在 LaTeX 搜尋和尋找 tex 檔案的某個地方是一個明智的想法。同時,我更喜歡TeXLive,所以我的建議都是與TeXLive相關的。 TeXLive 區分檔案系統上的三個位置,其中可以儲存 TeX 和 LaTeX 輸入:

  1. 主目錄,分發者收集所有文件並將其放入分發中。 TeXLive 將此位置的路徑儲存在 或$TEXMFMAIN$TEXMFDIST
  2. 還有第二個位置,專門供站點範圍內的 TeXLive 安裝的管理員使用。經理可以在此位置儲存與其公司相關的模板、樣式、字體等。 TeXLive 將位置存放在$TEXMFLOCAL.
  3. 最後,還有一個專用於個人用戶的位置。在此位置您可以存儲您的私人擴展,包括我的empty.sty. :-) TeXlive 將路徑儲存在$TEXMFHOME.

這三個位置是在過去的美好時光(tm) 中建立的,並且受到網絡UNIX 系統的強烈影響,在這種情況下,為整個公司/大學/... 擁有數百台機器安裝一個TeX 安裝是很常見的以及數千個可能的使用者。

如今,對於我們的個人電腦來說,沒有必要區分系統管理員的網站範圍安裝和使用者的私人文件,因為在大多數情況下,使用者與系統管理員相同。

儘管如此,仍有一件事值得一提。 LaTeX 大量使用大量文件。如果 LaTeX 直接在文件系統上搜索,並因此一遍又一遍地遞歸遍歷所有數千個目錄,只是為了找到您的empty.sty.為了保護系統免受這種勞動的影響,TeXLive 維護已安裝檔案的資料庫,並嘗試在這些資料庫之一中找到某個檔案的位置,以便直接在檔案系統上進行痛苦的搜尋。至少$TEXMFMAIN$TEXMFDIST和中的所有文件$TEXMFLOCAL都應插入到相應的資料庫中。您可以透過執行texhash或來更新資料庫mktexlsr

鑑於以下事實:a) 有很多用戶,必須為其維護單獨的資料庫,b) 用戶通常沒有很多不同的 TeX 輸入文件,通常會設定 TeXlive 來$TEXMFHOME搜尋文件系統而不是資料庫。

唉,將 複製empty.sty到您想要的位置後,您可以透過執行來檢查您的 TeX 系統是否會找到該樣式

kpsewhich tex empty.sty

kpsewhich應該列印文件的正確位置。

如果沒有,您最終會忘記更新資料庫或將檔案放置在錯誤的位置。

最後一句。為了在屬於成熟 TeX 安裝的數千個文件的混亂中保持某種秩序,維護者和分發者很早之前就達成了一個獨特的方案,即所謂的 TDS,TeX 目錄結構。閱讀該手冊,了解如何將文件傳播到所需位置。 (提示:應該是$TEXMFHOME/tex/latex/telmovianavaz/empty.sty。)

(我還糾正了 Christian Hupfer 發現的拼字錯誤。謝謝 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:

相關內容