LaTeX/Oznake i referenciranje
Uvod
urediU LaTeX-u možete lako referencirati gotovo sve što je numerisano (naslove, simbole, formule), a LaTeX će se pobrinuti oko numerisanja, tako što će da ažurira kad god to bude potrebno. Komande koje se koriste za lakše referenciranje su:
\label{marker}
- dajete objektu koji želite da referencirate marker, tako da ga možete videti kao ime.
\ref{marker}
- pozivate se na objekat koji ste prethodno označili. Ovo štampa broj koji je dodeljen objektu.
\pageref{marker}
- Ovo će ispisati broj stranice na kojoj se objekat nalazi.
LaTeX će obaviti precizno numerisanje objekata u dokumentu; marker koji ste koristili za obeležavanje objekta, neće biti nigde prikazan u dokumentu. Potom će LaTeX zameniti "\ref{marker}
" sa tačnim brojem koji je dodeljen objektu. Ako referencirate marker koji ne postoji, kompilacija dokumenta će biti uspešna, ali će LaTeX izbaciti upozorenje:
LaTeX Warning: There were undefined references.
i zameniće "\ref{unknown-marker}
" sa "??" (tako da će biti lako pronaći ga u dokumentu).
Kao što ste možda primetili kako radi čitanje, to je proces koji se sastoji iz dva koraka: prvo kompaljer mora da čuva oznake koje se koriste za referenciranje, a potom ih menja the \ref
sa odgovarajućim brojem. To je razlog zašto kada referencirate, morate dvaput kompajlovati dokument da biste videli željenu izlaznu vrednost. Ako samo jednom kompajlujete, LaTeX će iskoristiti starije podatke koje je prikupio u prethodnim kompajlovanjima (što je možda zastarelo), ali kompajler će vas obavestiti na kraju kompilacije sa svojim obaveštenjem:
- LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
Koristeći komandu \pageref{}
možete pomići čitaču da pronađe referencirani objekat pružajući broj stranice gde se može naći. Možete napisati nešto slično ovom:
Погледајте фигуру~\ref{fig:test} на страни~\pageref{fig:test}.
Pošto možete koristiti potpuno iste komande za referenciranje gotovo ničeg, možete biti malo zbunjeni nakon što ste uveli puno referenci. To je uobičajena praksa među LaTeX korisnicima, da dodaju neko uputstvo na oznaci kako bi opisali šta referenciraju. Neki paketi, kao što je fancyref
, se oslanjaju na ove informacije. Evo jedan primer:
ch: | poglavlje |
sec: | naslov |
subsec: | podnaslov |
fig: | figure |
tab: | tabela |
eq: | jednačina |
lst: | lista kodova |
itm: | numerisana lista |
alg: | algoritam |
app: | dodatak podglavlja |
Nakon ovog rapsporeda, oznaka figure će izgledati \label{fig:моја_фигура}
, itd. Niste u obavezi da koriste ove prefikse. Možete koristiti bilo koji string kao argument \label{...}
, ali kako vaš dokument postaje veći, ovi prefiksi postaju sve više korisni.
Još jedna sugestija: pokušajte da izbegnete korišćenje brojeva u oznakama. Možete bolje opisati šta je vaš objekat. Na ovaj način, ako promenite redosled objekata, nećete morati da menjate nazive svih svojih oznaka i njihovih referenci.
Ako želite da vidite markere kojnj koristite u izlaznom dokumentu, možete koristiti showkeys
paket; ovo može biti veoma korisno za izradu dokumenta. Za više informacija pogledajte Oznake paketa poglavlje.
Primeri
urediEvo nekoliko praktičnih primera, ali ćete primetiti da su svi isti, jer svi koriste iste komande.
Naslovi
uredi\section{Поздрав}
\label{sec:greetings}
Здраво!
\section{Референце}
Поздрав у поглављу~\ref{sec:greetings}.
Možete da postavite oznaku bilo gde u naslovu; kako god, kako bi se izbegla zabuna, bolje je da se odmah stavi na početku sekcije. Primetite da marker počinje sa sec:, kao što je sugerisano. Oznaka se zatim referencira u drugom odeljku. Tilda (~) služi za označavanje bez razmaka.
Slike
urediMožete referencirati sliku ubacivanjem u figure okruženje.
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{галеб}
\caption{Слика галеба}
\label{fig:галеб}
\end{figure}
Фигура \ref{fig:галеб} приказује слику галеба.
Kada je oznaka postavljena unutar ovog okruženja, \ref{...}
vraća respektivno fig/table broj, ali se mora pojaviti nakon natpisa. Kada se pojavi izlazni dokument, to će dati broj sekcije. Da biste bili potpuno sigurni, oznaka za bilo koju sliku ili tabelu može ići uz \caption{}
komandu, kao ovo:
\caption{Close-up of a gull\label{fig:gull}}
Pogledajte poglavlje Figure i natpisi za ostale figure
i srodna okruženja.
Popravka loših oznaka
urediKomanda \label
mora se pojaviti posle (ili unutar) \caption
. Inače će pokupiti trenutni broj sekcije ili liste umesto onog što ste nameravali.
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{галеб}
\caption{Слика галеба} \label{fig:галеб}
\end{figure}
U slučaju da koristite paket hyperref
za pravljenje PDF-a, linkovi za tabele ili figure će ukazati na natpis tabele ili figure, koji je uvek ispod same tabele ili figure[1]. Zato tabela ili figura neće biti vidljiva, ako je iznad pokazivača i mora da se skrola da bi se videlo. Ako želite link tačku na vrhu slike možete koristiti opciju hypcap
u caption
paketu:
\usepackage[hypcap]{caption}
Formule
urediEvo primera koji pokazuje kako se referenciraju formule:
\begin{equation} \label{eq:solve}
x^2 - 5 x + 6 = 0
\end{equation}
\begin{equation}
x_1 = \frac{5 + \sqrt{25 - 4 \times 6}}{2} = 3
\end{equation}
\begin{equation}
x_2 = \frac{5 - \sqrt{25 - 4 \times 6}}{2} = 2
\end{equation}
И решили смо једначину~\ref{eq:solve}
Kao što možete videti, oznaka je postavljena nakon početka moda matematike. U cilju referenciranja formula, morate da koristite okruženje koje dodaje brojeve. Uglavnom ćete koristiti equation
okruženje; to je najbolji izbor za jedno-linijske jednačine, bez obzira da li koristite amsmath
ili ne. Primetite da je eq: prefiks u oznaci.
eqref
urediPaket amsmath
ima novu komandu za referenciranje formula; To je \eqref{}
. Radi isto kao \ref{}
, ali dodaje zagrade tako da umesto štampanja običnog broja kao što je 5, odštampaće (5). Ovo može da pomogne čitaocu da razlikuje formulu od drugih stvari, bez potrebe da se ponavlja reč "formula" pre svake reference. Njegova izlazna vrednost se može menjati po želji; za više informacija pogledatje amsmath
dokument.
tag
urediKomanda \tag{eqnno}
se koristi za ručno postavljanje brojeva jednačina gde je eqnno proizvoljan tekst koji želite da se pojavi u dokumentu. Bolje je koristiti oznake, ali ponekad teško kodirane brojevi jednačina mogu ponuditi lakšu opciju. Ovo može biti kosirno, na primer ako želite da ponovite jednačinu koja već bila korišćena, npr. \tag{\ref{eqn:before}}
.
numberwithin
urediPaket amsmath
dodaje \numberwithin{countera}{counterb}
komandu koji zamenjuje jednostavan countera
sa sofisticiranijiim
counterb.countera
. Na primer \numberwithin{equation}{section}
u preambuli će se broj sektora odositi na sve brojeve jednačina.
cases
urediPaket cases
dodaje \numcases
i \subnumcases
komande, koje proizvode više slučajeva sa posebnom brojem jednačina i jednačina sa oznakama, respektivno, za svaki slučaj.
Paket varioref
urediOvaj varioref
paket uvodi novu komandu pod nazivom \vref{}
. Ova komanda se upravo koristi kao osnovna \ref
, ali ima drugačiju izlaz u zavisnosti od konteksta. ako je objekat koji treba da se referencira na istoj strani, onda radi isto kao \ref
; ako je objekat udaljen, onda će ispisati nešto poput "5 on page 25", odnosno automatski će dodati broj stranice. Ako je objekat u blizini, može da koristi neke prefinjene rečenice poput "on the next page" ili "on the facing page" automatski, prema okolnostima i klasi dokumenta.
Ova komanda se mora koristiti veoma pažljivo. Ona štampa više od jedne reči, tako da se može desiti da greškom odštampa na dve različite strane. U tom slučaju, algoritam može zbuniti i dovesti do petlje. Evo jedan primer. Vi označite objekat na strani 23 i desi se da \vref
izlaz ostane između stranica 23 i 24. Ako bi bio na strani 23, onda bi štampao kao osnovni ref
, a ako bi ostao na strani 24, štampao bi "on the previous page", ali u oba slučaja to može izazvati neke čudne greške koje bi zahtevale dosta vremena za popravku. Pomislili biste da se to dešava veoma retko; nažalost, ako ste napisali dug dokument nije neuobičajeno da imate na stotine referenci, tako da je ovakva situacija veoma moguća. Jedan od načina da se izbegne problem tokom rada je da se koristi standardni ref
sve vreme i da se konvertuje u vref
kada je dokument u fazi finalne verzije, a zatim popravka eventualnih problema.
Paket hyperref
urediautoref
urediPaket hyperref
uvodi još jednu korisnu komandu; \autoref{}
. Ova komanda kreira referencu sa dodatnim tekstovima koja odgovara potrebnom tipu, što će biti hiperlink. Na primer, komanda \autoref{sec:intro}
bi stvorila link do \label{sec:intro}
komande, gde god da je. Pod pretpostavkom da je ova oznaka pokazuje na sekciju, hiperlink će sadržati tekst "section 3.4", ili nešto slično (kompletan spisak standardnih imena može se naći ovde). Imajte na umu da, dok je \autoref*
komanda, stvaraće nelinkovane prefikse (korisno ako je oznaka na istoj strani kao i referenca), bez alternativne \Autoref
komande koja je definisana za proizvodnju verzije koja se plaća (korisni, na primer, kada se počinje rečenice); ali od kapitalizacije autoref imena su izabrana od strane autora paketa, možete prilagoditi redefinisanjem tekst prefiksa \typeautorefname
u prefiks koji želite, kao što je:
\def\sectionautorefname{Section}
Ovaj trik preimenovanja se može sasvim dobro koristi i u druge svrhe.
- Ako biste želeli da hiperlinkujete referencu, ali ne želite unapred definisani tekst koji
\autoref{}
pruža, to možete da uradite sa komandom, kao što je\hyperref[sec:intro]{Appendix~\ref*{sec:intro}}
. Imajte na umu da možete onemogućiti stvaranje hiperlinka uhyperref
i samo koristiti ove komande za automatski tekst.
- Imajte na umu da \label mora biti postavljen unutar okruženja sa brojačem, kao što je tabela ili fiura. U suprotnom, ne samo broj će se odnositi na trenutni odeljak, kao što je pomenuto gore, ali ime će se odnositi na prethodno okruženje sa brojačem. Na primer, ako stavite oznaku nakon zatvaranja figure, u oznaci će i dalje pisati "figure n", gde je n trenutni broj sekcije.
nameref
urediPaket hyperref
takođe automatski uključuje nameref
paket i komandu sa sličnim nazivom. Slično je \autoref{}
, ali inserti tekst odgovara nazivu odeljka, na primer.
Unos:
\section{MyFirstSection} \label{sec:marker}
\section{MySecondSection}
In section~\nameref{sec:marker} we defined...
Izlaz:
In section MyFirstSection we defined...
Ručno pozicioniranje
urediKada definišete \label
van figure, tabela ili neki drugi objekat, štampa oznaku u trenutnoj sekciji. U nekim slučajevima, ovo ponašanje
nije ono što želite i radije bi generisani link iskoristili za ukazivanje na liniju gde je \label
definisana. Ovo se može postići komandom
\phantomsection
kao u ovom primeru:
%Локација линка ће бити постављена на линији испод.
\phantomsection
\label{the_label}
Paket cleveref
urediPaket cleveref
uvodi novu komandu \cref{}
koji obuhvata tip referenciranog objekta kao što \autoref{}
radi. Alternativna \labelcref{}
komanda radi više kao standardna \ref{}
. Reference na stranicama se obrađuju od strane \cpageref{}
komande.
Komande \crefrange{}{}
i \cpagerefrange{}
očekuju početnu i krajnju oznaku u bilo kom redosledu kao i obezbeđivanje širokog spektra (babel
je omogućen) jezika. Ako su oznake navedene kao lista razdvojena zarezima sa uobičajenom \cref{}
komandom, onda će ih sortirati i grupisati automatski.
Format može biti naveden u preambuli.
Vidi još
urediReference
uredi