Использовать один и тот же шаблон в нескольких документах

Использовать один и тот же шаблон в нескольких документах

Я сделал макет в LaTeX (геометрия, поля, заголовки и т. д.), и мне нужно иметь несколько разных документов, использующих этот же макет. Поэтому мне интересно, могу ли я вместо копирования-вставки «макетной части» кода создать что-то вроде шаблона и использовать его в каждом имеющемся у меня документе.

Я искал некоторое время, но не смог найти ничего полезного по этому поводу. Возможно ли это? И если да, то как это можно сделать?

решение1

Есть хорошее введение.LaTeX для авторов классов и пакетовс большим количеством информации по этой теме.

Как указано в комментариях, вы можете написать свой собственный файл стиля или даже класс.

Я могу только догадываться, какой выбор будет подходящим для вас, но предполагаю, что вы ориентируетесь на свой собственный файл стилей.

Это более или менее бесполезный пустой стиль. Можете свободно заполнить его своей преамбулой. Конечно, вам не нужны эти обширные комментарии в верхней части файла, но помните: лучше документировать свои идеи, чем ...

Этот стиль должен быть сохранен как empty.sty. Конечно, вы должны дать своему стилю более дословное имя. Но если вы меняете имя файла, обязательно измените это имя и в файле, особенно в команде \ProvidesPackage. Иначе LaTeX выдаст ошибку.

Я определил новую логическую переменную @draft. Она устанавливается с помощью опции стиля draftили final: \usepackage[draft]{empty}будет определять режим черновика.

Эта опция передается в graphicx-package, который загружается этим стилем. (В вашем случае: geometryи так далее.) Также будьте осторожны: вместо вызова \usepackage, вы должны сказать \RequirePackage.

Вы также можете определить некоторые команды и даже использовать определенную логическую переменную, как я показал в конце этого файла.

EDIT: одно последнее слово о том, где хранить файл. В общем, было бы разумно хранить где-то, где 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.

Учитывая тот факт, что а) существует множество пользователей, для которых необходимо поддерживать отдельную базу данных, и б) у пользователя обычно нет большого количества различных входных файлов TeX, TeXlive обычно настраивается на поиск $TEXMFHOMEв файловой системе, а не в базе данных.

Увы, скопировав empty.styв нужное место, вы можете проверить, найдет ли ваша TeX-система стиль, выполнив команду

kpsewhich tex empty.sty

kpsewhichдолжно отобразиться правильное местоположение вашего файла.

Если этого не произошло, значит, вы забыли обновить базу данных или разместили файл в неправильном месте.

Одно последнее слово. Чтобы поддерживать порядок в хаосе тысяч файлов, которые принадлежат полноценной установке TeX, разработчики и дистрибьюторы давно договорились об уникальной схеме, так называемой TDS,Структура каталога TeX. Прочитайте это руководство, чтобы получить представление о том, как распределить файлы в нужном месте. (ПОДСКАЗКА: это должно быть $TEXMFHOME/tex/latex/telmovianavaz/empty.sty.)

(Я также исправил опечатку, найденную Кристианом Хапфером. Спасибо, Кристиан!)

%%%
%%% @(#) 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:

Связанный контент