LaTeX (carte)/LaTeX personalizat
Documentele produse cu comenzile pe care le-ați învățat până acum vor arăta acceptabil pentru multă lume. Deși nu au un aspect deosebit de atrăgător, respectă toate regulile consacrate de redactare de calitate, ceea ce le va face ușor de citit și cu un aspect plăcut. Totuși, sunt cazuri în care LaTeX nu oferă o comandă sau un mediu, sau nu produce un output care să răspundă cerințelor impuse.
În acest capitol, voi încerca să vă ofer câteva indicii despre trucuri noi în LaTeX și cum puteți realiza un output care să arate diferit de versiunea implicită LaTeX.
Comenzi noi
modificarePentru a adăuga propriile comenzi, utilizați comanda
\newcommand{nume}[nr_arg]{definiție}
În esență, această comandă necesită doi parametri: numele comenzii pe care vreți s-o creați și definiția comenzii. Parametrul nr_arg din paranteze drepte este opțional și specifică numărul de argumente pe care le va lua noua comandă (maxim 9). Dacă lipsește, numărul implicit este 0, adică nu sunt permise argumente.
Următoarele două exemple vă vor ajuta să înțelegeți cum funcționează. Primul exemplu definește o comandă nouă denumită \manl ce afișează mesajul "Manualul LaTeX". O astfel de comandă poate fi utilă dacă trebuie să scrii titlul acestui manual de nenumărate ori.
\newcommand{\manl}{Manualul \LaTeX}
Acesta este ‘‘\manl'' \ldots{} ‘‘\manl''
|
Acesta este “Manualul LaTeX” … “Manualul LaTeX” |
Exemplul următor vă arată cum să definiți o nouă comandă ce ia un argument. Eticheta #1 va fi înlocuită de argumentul specificat. Dacă vreți să folosiți mai multe argumente, scrieți #2 și așa mai departe, numărul de argumente fiind specificat între paranteze drepte.
\newcommand{\manlsus}[1] {Acesta este manualul LaTeX susținut de #1}
\newcommand{\manldoi}[2] {Acesta este manualul LaTeX susținut de #1 #2}
% în document:
\begin{itemize}
\item \manlsus{Wikimedia}
\item \manlsus{o mulțime de utilizatori!}
\item \manldoi{Ion}{Popescu}
\end{itemize}
|
|
Notă: scrieți \manldoi, nu \manl2 (eroare la compilare)
LaTeX nu vă permite să creați o comandă nouă care va suprascrie una existentă. Pentru asta există o comandă specială: \renewcommand. Această comandă folosește aceeași sintaxă ca și \newcommand.
În unele situații ați putea opta și pentru comanda \providecommand. Aceasta merge la fel ca \newcommand, însă în cazul în care comanda este deja definită, LaTeX o va ignora fără vă emită nici un avertisment.
Cu LaTeX2e, puteți de asemenea să adăugați un parametru implicit unei comenzi, cu ajutorul sintaxei de mai jos:
\newcommand{nume}[nr][implicit]{definiție}
Dacă parametrul implicit al noii comenzi (\newcommand) este prezent, atunci primul dintre argumentele specificate (în număr de nr) este opțional și are valoarea implicită dată de parametrul implicit; dacă acest parametru lipsește, atunci toate argumentele sunt obligatorii.
\newcommand{\manldoi}[2][Wikimedia]{Acesta este Wikimanualul despre LaTeX sprijinit de {#1} și {#2}!}
% în corpul documentului:
\begin{itemize}
\item \manldoi{Ion Popescu}
\item \manldoi[o mulțime de utilizatori]{Ion Popescu}
\end{itemize}
|
|
NOTĂ: când comanda se folosește cu primul parametru specificat în mod explicit, acesta este scris între paranteze drepte ( "[o mulțime de utilizatori]" ).
Medii Noi
modificareLa fel ca în cazul comenzii \newcommand, există o comandă pentru a crea propriile medii. Comanda \newenvironment folosește următoarea sintaxă:
\newenvironment{nume}[nr]{înainte}{după}
Din nou comanda \newenvironment poate avea un argument opțional. Materialul specificat în argumentul înainte este procesat înaintea textului din cadrul mediului. Materialul din argumentul după este procesat când se întâlnește comanda \end{nume}.
Argumentul nr se folosește la fel ca în cazul comenzii \newcommand. LaTeX are grijă ca să nu puteți defini un mediu care deja există. Dacă veți dori vreodată să modificați un mediu existent, puteți folosi comanda \renewenvironment. Aceasta folosește aceeași sintaxă ca și \newenvironment.
Exemplul de mai jos ilustrează utilizarea comenzii \newenvironment:
\newenvironment{rege}
{\rule{1ex}{1ex}\hspace{\stretch{1}}}
{\hspace{\stretch{1}}\rule{1ex}{1ex}}
\begin{rege}
Umilii mei subiecți \ldots
\end{rege}
|
Spațiu suplimentar
modificareCând creați un mediu nou vă puteți lovi ușor de spațiile suplimentare ce apar și care pot avea efecte foarte neplăcute, spre exemplu când vreți să creați un mediu pentru titlu ce suprimă propria indentare, ca și pe cea a paragrafului următor. Comanda \ignorespaces din blocul de început al mediului îl va face să ignore orice spațiu întâlnit după executarea blocului de început. Blocul de la sfârșit este ceva mai problematic deoarece la sfârșitul mediului are loc o procesare specială. Prin intermediul comenzii \ignorespacesafterend, LaTeX va da o comandă \ignorespaces după realizarea procesării speciale de la ‘final’.
\newenvironment{simplu}%
{\noindent}%
{\par\noindent}
\begin{simplu}
Vezi spațiul\\din stânga.
\end{simplu}
La fel\\aici.
|
Vezi spațiul din stânga. La fel aici. |
\newenvironment{corect}%
{\noindent\ignorespaces}%
{\par\noindent%
\ignorespacesafterend}
\begin{corect}
Niciun spațiu\\la stânga.
\end{corect}
La fel\\aici.
|
Niciun spațiu la stânga. La fel aici. |
De asemenea, dacă încă mai aveți probleme cu spațiul suplimentar ce se adaugă la sfârșitul mediului când folosiți \input pentru sursele externe, aveți grijă să nu lăsați niciun spațiu între începutul, locul de importare a sursei externe, și sfârșitul mediului, spre exemplu:
\begin{corect}\input{fișier.tex}\end{corect}
LaTeX în linia de comandă
modificareDacă lucrați pe un sistem de operare de tipul Unix, s-ar putea să folosiți fișiere Makefile sau alt tip de script pentru a vă crea proiectele LaTeX. În acest sens v-ar putea interesa să realizați versiuni diferite ale aceluiași document lansând LaTeX cu parametri în linia de comandă. Puteți adăuga următoarea structură la începutul documentului:
\usepackage{ifthen}
\ifthenelse{\equal{\blackandwhite}{true}}{
% modul "black and white" (alb și negru); fă ceva..
}{
% modul "color"; fă ceva diferit..
}
Acum puteți lansa LaTeX din terminal în felul următor:
latex '\newcommand{\blackandwhite}{true}\input{test.tex}'
Mai întâi se definește comanda \blackandwhite și apoi se citește fișierul cu comanda \input. Dacă setați \blackandwhite să fie 'false', atunci se va produce versiunea color a documentului.
Crearea propriului pachet
modificareDacă definiți o mulțime de medii și comenzi noi, preambulul documentului dvs. va deveni foarte mare. În această situație, este o idee bună să creați un pachet LaTeX care să conțină toate aceste definiții de medii și comenzi. Puteți folosi apoi comanda \usepackage pentru a face pachetul disponibil în document. Scrierea unui pachet în esență constă în copierea conținutului preambulului documentului într-un fișier separat cu extensia .sty.
Este foarte simplu, urmați pașii următori:
- creați un fișier text simplu pe care îl denumiți pachetulmeu.sty (sau orice alt nume vreți) și îl deschideți cu un editor de text
- chiar la începutul fișierului text scrieți
\ProvidesPackage{pachetulmeu}
- notă: trebuie să scrieți același nume ca denumirea fișierului fără extensie. Această comandă transmite sistemului LaTeX denumirea pachetului și permite sistemului să afișeze un mesaj de eroare corespunzător dacă încercați să includeți pachetul de două ori.
- scrieți ce vreți în fișierul text, folosind toate comenzile LaTeX pe care le știți. În mod normal ar trebui să definiți comenzi noi sau să importați alte pachete.
- importați noul pachet cu binecunoscuta comandă
\usepackage{pachetulmeu}
- sau
\RequirePackage{pachetulmeu}
Fișierul pachetulmeu.sty și fișierul sursă LaTeX (cu extensia .tex) pe care îl compilați trebuie să fie în același director. O să fie la fel ca și cum ați fi scris pachetul chiar în document.
Crearea propriului stil
modificarePuteți de asemenea să creați propriul fișier de stil. Procesul este similar cu crearea propriului pachet. Puteți încărca propriul fișier de stil în preambulul documentului cu ajutorul comenzii:
\documentclass{stilulmeu}
Denumirea fișierului de stil este atunci stilulmeu.cls. Acest fisier poate fi deschis cu orice editor de text. Prima linie a acestui fișier trebuie să aibă următorul conținut:
\ProvidesClass{stilulmeu}
Din nou, în fișierele de stil puteți importa alte fișiere sau pachete cu comanda \RequirePackage.
Spațiere
modificareSpațierea liniilor
modificareDacă vreți să folosiți spații mai mari între linii într-un document, puteți să schimbați valoarea spațiului implicit dintre linii cu ajutorul comenzii
\linespread{factor}
în preambulul documentului. Folosiți \linespread{1.3} pentru spațierea la "un rând și jumătate" și \linespread{1.6} pentru spațierea "dublă" (la două linii). În mod implicit liniile au spațiere normală, astfel că factorul implicit de spațiere a liniilor este 1.
Pachetul setspace permite un control mai precis al spațierii liniilor. Pentru a seta spațierea liniilor la "un rând și jumătate" în tot documentul, însă nu și acolo unde nu este necesar (spre exemplu în note de subsol, titluri), procedați în felul următor:
\usepackage{setspace}
%\singlespacing
\onehalfspacing
%\doublespacing
%\setstretch{1.1}
Pentru a schimba spațierea liniilor în anumite locuri din document, pachetul setspace vă pune la dispoziție mediile singlespace, onehalfspace, doublespace și spacing:
Formatarea paragrafelor
modificareÎn LaTeX, formatarea paragrafelor este determinată de doi parametri. Cu o definiție de genul:
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
în preambulul documentului, puteți schimba formatul paragrafelor. Aceste două comenzi măresc spațiul dintre două paragrafe în timp ce indentarea paragrafelor este setată pe zero.
Părțile plus și minus ale lungimii de mai sus transmit sistemului TeX că poate să comprime sau să extindă spațiul dintre paragrafe cu valoarea specificată, dacă este necesar să încadreze în mod corespunzător paragrafele în pagină. În Europa continentală, paragrafele sunt adesea separate cu ceva spațiu, dar nu sunt indentate. Însă aveți grijă că formatarea paragrafelor influențează și formatul cuprinsului. Liniile cuprinsului sunt și ele mai spațiate acum. Pentru a evita asta, puteți muta cele două comenzi din preambul undeva după comanda \tableofcontents în document. Puteți să vă gândiți dacă vreți să folosiți facilitatea de spațiere a paragrafelor sau nu. Cele mai multe cărți de specialitate indentează paragrafele, însă nu folosesc spații adiționale între paragrafe.
Dacă vreți să indentați un paragraf care nu e deja indentat, puteți folosi comanda
\indent
la începutul paragrafului. Evident, asta va avea efect doar dacă \parindent nu este setat pe zero. Dacă vreți să indentați începutul fiecărei secțiuni, puteți folosi pachetul indentfirst, vezi capitolul LaTeX/Pachete pentru mai multe detalii.
Pentru a crea un paragraf neindentat, puteți folosi comanda
\noindent
chiar la începutul paragrafului. Acest lucru ar putea fi foarte util cănd începeți un document cu text și nu cu o comandă de secționare (care marchează începutul unei secțiuni).
Spațiu orizontal
modificareLaTeX determină automat spațiile dintre cuvinte și fraze. Pentru a adăuga spațiu orizontal, folosiți comanda:
\hspace{lungime}
Dacă vreți să păstrați un spațiu chiar dacă este la începutul sau la sfârșitul unei linii, folosiți comanda \hspace* în loc de \hspace. Lungimea în cazul cel mai simplu este doar un număr și o unitate de măsură, de exemplu \hspace{1.5 cm}. Pentru o listă cu toate unitățile de măsură, vezi anexa Macrouri utile pentru măsurare.
Comanda:
\stretch{n}
generează un spațiu special de ajustare (rubber space). Acesta se extinde pentru a ocupa tot spațiul disponibil de pe o linie. Dacă folosiți două comenzi \hspace{\stretch{n}} pe aceeași linie, acestea vor determina extinderea spațiului în funcție de factorul de extindere (stretch factor).
x\hspace{\stretch{1}}
x\hspace{\stretch{3}} x
|
x x x |
Spațiu vertical
modificareSpațiul dintre paragrafe, secțiuni, subsecțiuni, etc., este determinat automat de sistemul LaTeX. Spațierea implicită a paragrafelor poate fi modificată plasând următoarea comandă în preambulul documentului:
\parskip 7.2pt
Dacă este necesar, puteți adăuga spațiu vertical adițional între două paragrafe cu comanda:
\vspace{lungime}
Această comandă ar trebui utilizată în mod normal între două linii goale (fără text). Dacă vreți ca acest spațiu vertical să rămână chiar și la începutul sau la sfârșitul unei pagini, utilizați versiunea stelată a comenzii, și anume \vspace* în loc de \vspace. Puteți folosi comenzile \stretch împreună cu \pagebreak pentru a aranja text pe ultima linie a paginii saU pentru a centra text vertical pe o pagină.
Puteți adăuga spațiu adițional între două linii ale aceluiași paragraf sau într-un tabel cu comanda
\\[lungime]
Dacă vreți să adăugați spațiu la începutul unui document, fără a scrie nimic înainte, puteți folosi
{ \phantom{.} \vspace{lungime} }
Este important să folosiți comanda \phantom și acolade, altfel sistemul LaTeX va da o eroare.