LaTeX/Kreiranje paketa

Izvor: Викикњиге

LaTeX

Početak
  1. Uvod100% završen  Dec 13, 2015
  2. Instalacija100% završen  Dec 13, 2015
  3. Instalacija dodatnih paketa 100% završen  Dec 13, 2015
  4. Osnove 100% završen  Dec 13, 2015
  5. Kako pronaći pomoć 100% završen  Dec 13, 2015

Zajednički elementi

  1. Struktura dokumenta 100% završen  Dec 28, 2015
  2. Formatiranje teksta 100% završen  Dec 27, 2015
  3. Formatiranje paragrafa 100% završen  Jan 02, 2016
  4. Boje 100% završen  Jan 10, 2016
  5. Slova100% završen  Jan 10, 2016
  6. Struktura listi 100% završen  Jan 10, 2016
  7. Posebni znakovi 100% završen  Jan 10, 2016
  8. Internacionalizacija 100% završen  Jan 10, 2016
  9. Rotacija 100% završen  Jan 10, 2016
  10. Tabele 100% završen  Jan 10, 2016
  11. Stvaranje naslova 100% završen  Jan 10, 2016
  12. Raspored strane 100% završen  Jan 10, 2016
  13. Uvoz grafike 100% završen  Jan 10, 2016
  14. Figure i natpisi100% završen  Jan 10, 2016
  15. Fusnote i Margine100% završen  Jan 10, 2016
  16. Hiperlinkovi 100% završen  Jan 10, 2016
  17. Oznake i referenciranje100% završen  Jan 10, 2016

Mehanika

  1. Greške i upozorenja 75% završen  Jan 02, 2016
  2. Dužine 100% završen  Jan 02, 2016
  3. Brojači 100% završen  Jan 02, 2016
  4. Kutije 100% završen  Jan 02, 2016
  5. Pravila i nosači 100% završen  Jan 02, 2016

Tehnički tekstovi

  1. Matematika100% završen  Jan 10, 2016
  2. Naprednija matematika 75% završen  Jan 10, 2016
  3. Teoreme
  4. Hemijska grafika 75% završen  Jan 02, 2016
  5. Algoritmi 75% završen  Jan 02, 2016
  6. Listiranje izvornog koda 100% završen  Jan 02, 2016
  7. Lingvistika 75% završen  Jan 02, 2016

Posebne strane

  1. Indeksiranje 75% završen  Jan 02, 2016
  2. Rečnik 75% završen  Jan 02, 2016
  3. Upravljanje bibliografijom‎ 75% završen  Jan 10, 2016
  4. Više bibliografije

Posebni dokumenti

  1. Pisma 50% završen  Jan 02, 2016
  2. Prezentacije 75% završen  Jan 02, 2016
  3. Učiteljski deo 75% završen  Jan 10, 2016
  4. Kratka biografija 50% završen  Jan 02, 2016

Kreiranje grafika

  1. Predstavljanje proceduralnih grafika 100% završen  Jan 02, 2016
  2. MetaPostovi 0% završen  Jan 02, 2016
  3. Slika 50% završen  Jan 02, 2016
  4. PGF/TikZ 25% završen  Jan 02, 2016
  5. PSTricks 50% završen  Jan 02, 2016
  6. Xy-pic 25% završen  Jan 02, 2016
  7. Pravljenje 3D grafika 75% završen  Jan 02, 2016

Programiranje

  1. Makroi 100% završen  Jan 10, 2016
  2. Običan TeH‎ 100% završen  Jan 10, 2016
  3. Kreiranje paketa 100% završen  Jan 10, 2016
  4. Teme 75% završen  Jan 10, 2016

Razno

  1. Modularni Dokumenti 100% završen  Jan 10, 2016
  2. Zajedničko pisanje LaTeX dokumenata 75% završen  Jan 10, 2016
  3. Otpremanje u druge formate 100% završen  Jan 10, 2016

Pomoć i preporuke

  1. Najčešće postavljana pitanja 100% završen  Jan 10, 2016
  2. Saveti i trikovi 75% završen  Jan 10, 2016

Dodaci

  1. Autori 0% završen  Jan 10, 2016
  2. Linkovi 0% završen  Jan 10, 2016
  3. Oznake paketa 0% završen  Jan 10, 2016
  4. Primeri LaTeX dokumenata 0% završen  Jan 10, 2016
  5. Indeks 0% završen  Jan 10, 2016
  6. Rečnik naredbi 0% završen  Jan 10, 2016

Ako definišete mnogo novih okruženja i komandi, preambula vašeg dokumenta će postati prilično duga. U ovoj situaciji, dobra ideja je da se stvori LaTeH paket ili klasa koja sadrži sve komande i definicije okruženja. Može biti dovoljno dinamičan da odgovara svim vašim budućim dokumentima.

Klase su .cls fajlovi, paketi su sačuvani u .sty fajlovima. Oni su veoma slični, glavna razlika je što možete učitati samo jednu klasu po dokumentu.

Nakon odluke da stvorite sopstveni paket ili klasu, treba da razmislite koju licencu paket/klasa ima. Licenca je od velikog značaja, bilo da štiti fajl, ili da ga čini dostupnim za druge.


makeatletter i makeatother[uredi]

Podrazumevano, LaTeH će dozvoliti upotrebu '@' znakova za kontrolne sekvence iz paketa ili klasa fajlova, ali ne iz dokumenta krajnjeg korisnika. Na ovaj način je moguće zaštititi komande, tj. napraviti ih dostupnim samo iz paketa.

Bilo kako bilo, moguće je preskočiti ovu sigurnost uz pomoć\makeatletter i \makeatother. Ove komande imaju smisla samo u regularnim dokumentima, nisu potrebni u fajlovima paketa ili klasa.

\documentclass{...}
%...

\begin{document}

\makeatletter
\@author
\makeatother

\end{document}

Stvaranje sopstvenog paketa[uredi]

Vaš paket može biti dostupan u vašem dokumentu kao i bilo koji drugi paket: koristeći \usepackage komandu. Pisanje paketa se u osnovi sastoji od kopiranja sadržaja preambule vašeg dokumenta u odvojeni fajl sa imenom koje se završava sa .sty.

Hajde da napišemo prvi custom.sty fajl kao primer paketa:

\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{...} precizira koja verzija TeHa ili LaTeHa je potrebna da se pokrene vaš paket. Opcioni datum se može koristiti za preciznije navođenje verzije.
  • \ProvidesPackage{<name>}[<version>] Paket se uvodi koristeći ovu komandu <name> koja treba da bude identična osnovnom imenu samog fajla. <version> treba da počinje datumom u formatu GGGG/MM/DD. Verziju informacije treba čuvati ažuriranom dok se razvija paket.
  • Sledeće možete napisati neki TeH ili LaTeH kod kao učitavanje paketa, ali napišite samo minimum potreban za opcije paketa navedene u nastavku.
  • \RequirePackage je ekvivalentan \usepackage.
  • \DeclareOptions su parametri krajnjeg korisnika. Svaka opcija je deklarisana jednom takvom komandom.
  • \ExecuteOptions{...} pokazuje šta je podrazumevano.
  • \ProcessOptions\relax prekida obradu opcije.
  • Napišite šta god želite i pri tome koristite sve LaTeH komande koje znate. Normalno, treba da definišete sve nove komande ili ubacite druge pakete.
  • \endinput: ovo mora biti poslednja komanda.

Kada je vaš paket spreman, možemo ga koristiti u bilo kom dokumentu. Ubacite vaš nov paket pomoću poznate komande \usepackage{mypack}. Fajl custom.sty i LaTeH izvor koji sastavljate moraju biti u istom direktorijumu.

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

\begin{document}

Бла...

\end{document}

Za više ugodnosti, moguće je postaviti paket u $TEXMFHOME (koji je ~/texmf podrazumevano) prema strukturi TeH direktorijuma strukture (TDS). To bi bilo

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

Na Vindovsu '~' je često C:\Users\username.

Možda ćete morati da pokrenete texhash (ili ekvivalent) kako biste napravili vaš novi fajl TeH distribucioni indeks, koji ga čini dostupnim za korišćenje za bilo koji dokument. To će vam omogućiti da koristite svoj paket kao što je opisano gore, ali bez potrebe da bude u istom direktorijumu kao i dokument.

Stvaranje sopstvene klase[uredi]

Takođe je moguće kreirati svoju fajl klasu. Proces je sličan kreiranju sopstvenog paketa, možete pozvati svoj stil fajl u preambuli bilo kog dokumenta pomoću komande:

\documentclass{myclass}

Ime klase fajla je onda myclass.cls. Hajde da napišemo jednostavan primer:

\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 je duplikat \ProvidesPackage.
  • \PassOptionsToClass i \PassOptionsToPackage se koriste za automatsko pozivanje odgovarajuće opcije kada je klasa ili paket učitan.
  • \DeclareOption*: zvezda verzija vam dozvoljava da rukujete neubačenim opcijama.
  • \ClassWarning će pokazati odgovarajuću poruku u TeH kompajleru.
  • \LoadClassoznačava jedinstvenu roditelj klasu, ako ih ima.

Udice[uredi]

Postoje i udice za klase i pakete.

  • \AtEndOfPackage
  • \AtEndOfClass

Oni se ponašaju kao udice dokumenata. Vidi LaTeH Udice.


Prethodno: Običan TeH Indeks Sledeće: Teme