ЛаТеX/Креирање пакета

Ако дефинишете много нових окружења и команди, преамбула вашег документа ће постати прилично дуга. У овој ситуацији, добра идеја је да се створи ЛаТеХ пакет или класа која садржи све команде и дефиниције окружења. Може бити довољно динамичан да одговара свим вашим будућим документима.

LaTeX

Почетак
  1. Увод100% завршен  Dec 13, 2015
  2. Инсталација100% завршен  Dec 13, 2015
  3. Инсталација додатних пакета 100% завршен  Dec 13, 2015
  4. Основе 100% завршен  Dec 13, 2015
  5. Како пронаћи помоћ 100% завршен  Dec 13, 2015

Заједнички елементи

  1. Структура документа 100% завршен  Dec 28, 2015
  2. Форматирање текста 100% завршен  Dec 27, 2015
  3. Форматирање параграфа 100% завршен  Јан 02, 2016
  4. Боје 100% завршен  Jan 10, 2016
  5. Слова100% завршен  Jan 10, 2016
  6. Структура листи 100% завршен  Jan 10, 2016
  7. Посебни знакови 100% завршен  Jan 10, 2016
  8. Интернационализација 100% завршен  Jan 10, 2016
  9. Ротација 100% завршен  Jan 10, 2016
  10. Табеле 100% завршен  Jan 10, 2016
  11. Стварање наслова 100% завршен  Jan 10, 2016
  12. Распоред стране 100% завршен  Jan 10, 2016
  13. Увоз графике 100% завршен  Jan 10, 2016
  14. Фигуре и натписи100% завршен  Jan 10, 2016
  15. Фусноте и Маргине100% завршен  Jan 10, 2016
  16. Хиперлинкови 100% завршен  Jan 10, 2016
  17. Ознаке и референцирање100% завршен  Jan 10, 2016

Механика

  1. Грешке и упозорења 75% завршен  Јан 02, 2016
  2. Дужине 100% завршен  Јан 02, 2016
  3. Бројачи 100% завршен  Јан 02, 2016
  4. Кутије 100% завршен  Јан 02, 2016
  5. Правила и носачи 100% завршен  Јан 02, 2016

Технички текстови

  1. Математика100% завршен  Jan 10, 2016
  2. Напреднија математика 75% завршен  Jan 10, 2016
  3. Теореме
  4. Хемијска графика 75% завршен  Јан 02, 2016
  5. Алгоритми 75% завршен  Јан 02, 2016
  6. Листирање изворног кода 100% завршен  Јан 02, 2016
  7. Лингвистика 75% завршен  Јан 02, 2016

Посебне стране

  1. Индексирање 75% завршен  Јан 02, 2016
  2. Речник 75% завршен  Јан 02, 2016
  3. Управљање библиографијом‎ 75% завршен  Jan 10, 2016
  4. Више библиографије

Посебни документи

  1. Писма 50% завршен  Јан 02, 2016
  2. Презентације 75% завршен  Јан 02, 2016
  3. Учитељски део 75% завршен  Jan 10, 2016
  4. Кратка биографија 50% завршен  Јан 02, 2016

Креирање графика

  1. Представљање процедуралних графика 100% завршен  Јан 02, 2016
  2. МетаПостови 0% завршен  Јан 02, 2016
  3. Слика 50% завршен  Јан 02, 2016
  4. PGF/TikZ 25% завршен  Јан 02, 2016
  5. PSTricks 50% завршен  Јан 02, 2016
  6. Xy-pic 25% завршен  Јан 02, 2016
  7. Прављење 3D графикa 75% завршен  Јан 02, 2016

Програмирање

  1. Макрои 100% завршен  Jan 10, 2016
  2. Обичан ТеХ‎ 100% завршен  Jan 10, 2016
  3. Креирање пакета 100% завршен  Jan 10, 2016
  4. Теме 75% завршен  Jan 10, 2016

Разно

  1. Модуларни Документи 100% завршен  Jan 10, 2016
  2. Заједничко писање LaTeX докумената 75% завршен  Jan 10, 2016
  3. Отпремање у друге формате 100% завршен  Jan 10, 2016

Помоћ и препоруке

  1. Најчешће постављана питања 100% завршен  Jan 10, 2016
  2. Савети и трикови 75% завршен  Jan 10, 2016

Додаци

  1. Аутори 0% завршен  Jan 10, 2016
  2. Линкови 0% завршен  Jan 10, 2016
  3. Ознаке пакета 0% завршен  Jan 10, 2016
  4. Примери LaTeX докумената 0% завршен  Jan 10, 2016
  5. Индекс 0% завршен  Jan 10, 2016
  6. Речник наредби 0% завршен  Jan 10, 2016

Класе су .cls фајлови, пакети су сачувани у .sty фајловима. Они су веома слични, главна разлика је што можете учитати само једну класу по документу.

Након одлуке да створите сопствени пакет или класу, треба да размислите коју лиценцу пакет/класа има. Лиценца је од великог значаја, било да штити фајл, или да га чини доступним за друге.


makeatletter и makeatother

уреди

Подразумевано, ЛаТеХ ће дозволити употребу '@' знакова за контролне секвенце из пакета или класа фајлова, али не из документа крајњег корисника. На овај начин је могуће заштитити команде, тј. направити их доступним само из пакета.

Било како било, могуће је прескочити ову сигурност уз помоћ\makeatletter и \makeatother. Ове команде имају смисла само у регуларним документима, нису потребни у фајловима пакета или класа.

\documentclass{...}
%...

\begin{document}

\makeatletter
\@author
\makeatother

\end{document}

Стварање сопственог пакета

уреди

Ваш пакет може бити доступан у вашем документу као и било који други пакет: користећи \usepackage команду. Писање пакета се у основи састоји од копирања садржаја преамбуле вашег документа у одвојени фајл са именом које се завршава са .sty.

Хајде да напишемо први custom.sty фајл као пример пакета:

\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{custom}[2013/01/13 Custom Package]

\RequirePackage{lmodern}

%% 'sans serif' по избору
\DeclareOption{sans}{
  \renewcommand{\familydefault}{\sfdefault}
}

%% 'roman' по избору
\DeclareOption{roman}{
  \renewcommand{\familydefault}{\rmdefault}
}

%% Глобално увлаћење по избору
\newif\if@neverindent\@neverindentfalse
\DeclareOption{neverindent}{
  \@neverindenttrue
}

\ExecuteOptions{roman}

\ProcessOptions\relax

%% Традиционални ЛаТеХ или ТеХ следи...
% ...

\newlength{\pardefault}
\setlength{\pardefault}{\parindent}
\newcommand{\neverindent}{ \setlength{\parindent}{0pt} }
\newcommand{\autoindent}{ \setlength{\parindent}{\pardefault} }

\if@neverindent
\neverindent
\fi

% ...

\endinput
  • \NeedsTeXFormat{...} прецизира која верзија ТеХа или ЛаТеХа је потребна да се покрене ваш пакет. Опциони датум се може користити за прецизније навођење верзије.
  • \ProvidesPackage{<name>}[<version>] Пакет се уводи користећи ову команду <name> која треба да буде идентична основном имену самог фајла. <version> треба да почиње датумом у формату ГГГГ/ММ/ДД. Верзију информације треба чувати ажурираном док се развија пакет.
  • Следеће можете написати неки ТеХ или ЛаТеХ код као учитавање пакета, али напишите само минимум потребан за опције пакета наведене у наставку.
  • \RequirePackage је еквивалентан \usepackage.
  • \DeclareOptions су параметри крајњег корисника. Свака опција је декларисана једном таквом командом.
  • \ExecuteOptions{...} показује шта је подразумевано.
  • \ProcessOptions\relax прекида обраду опције.
  • Напишите шта год желите и при томе користите све ЛаТеХ команде које знате. Нормално, треба да дефинишете све нове команде или убаците друге пакете.
  • \endinput: ово мора бити последња команда.

Када је ваш пакет спреман, можемо га користити у било ком документу. Убаците ваш нов пакет помоћу познате команде \usepackage{mypack}. Фајл custom.sty и ЛаТеХ извор који састављате морају бити у истом директоријуму.

\documentclass{...}
\usepackage[neverindent,sans]{custom}
%...

\begin{document}

Бла...

\end{document}

За више угодности, могуће је поставити пакет у $TEXMFHOME (који је ~/texmf подразумевано) према структури ТеХ директоријума структуре (ТДС). То би било

$TEXMFHOME/tex/latex/custom/custom.sty

На Виндовсу '~' је често C:\Users\username.

Можда ћете морати да покренете texhash (или еквивалент) како бисте направили ваш нови фајл ТеХ дистрибуциони индекс, који га чини доступним за коришћење за било који документ. То ће вам омогућити да користите свој пакет као што је описано горе, али без потребе да буде у истом директоријуму као и документ.

Стварање сопствене класе

уреди

Такође је могуће креирати своју фајл класу. Процес је сличан креирању сопственог пакета, можете позвати свој стил фајл у преамбули било ког документа помоћу команде:

\documentclass{myclass}

Име класе фајла је онда myclass.cls. Хајде да напишемо једноставан пример:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}[2011/12/23 Моја класа]

%% Члан по избору
\DeclareOption{10pt}{
  \PassOptionsToClass{\CurrentOption}{article}
}

%% Одабир пакета по избору
\DeclareOption{sansserif}{
  \PassOptionsToPackage{\CurrentOption}{paxcommands}
}
\DeclareOption{neverindent}{
  \PassOptionsToPackage{\CurrentOption}{paxcommands}
}

%% Повлачење
\DeclareOption*{
  \ClassWarning{myclass}{Unknown option '\CurrentOption'}
}

%% Извршавање подразумеване опције
\ExecuteOptions{10pt}

%% Процес опције
\ProcessOptions\relax

%% Учитана база
\LoadClass[a4paper]{article}

%% Учитани додатни пакети или команде
\RequirePackage{custom}

%% Додатни ТеХ/ЛаТеХ код...

\endinput


  • \ProvidesClass је дупликат \ProvidesPackage.
  • \PassOptionsToClass и \PassOptionsToPackage се користе за аутоматско позивање одговарајуће опције када је класа или пакет учитан.
  • \DeclareOption*: звезда верзија вам дозвољава да рукујете неубаченим опцијама.
  • \ClassWarning ће показати одговарајућу поруку у ТеХ компајлеру.
  • \LoadClassозначава јединствену родитељ класу, ако их има.

Удице

уреди

Постоје и удице за класе и пакете.

  • \AtEndOfPackage
  • \AtEndOfClass

Они се понашају као удице докумената. Види ЛаТеХ Удице.


Претходно: Обичан ТеХ Индекс Следеће: Теме