LaTeX/Hiperlinkovi
LaTeX omogućuje pripremu za hiperlinkova, što je korisno kada je konačan format PDF i hiperveze koje se mogu pratiti. To radi pomoću paketa hyperref.
Hyperref
urediPaket hyperref[1] daje LaTeX-u sposobnost da se kreira hiperlink u dokumentu. To radi sa komandom pdflatex i takođe sa standardnim "latex" koristi sa dvips i ghostscript ili dvipdfm da napravi PDF fajl. Ako ga učitate, imaćete mogućnost da uključite interaktivne eksterne linkove i sve svoje interne reference ćete pretvoriti u hiperlinkove. Kompajler pdflatex čini mogućim stvaranje PDF fajlova direktno iz LaTeX izvora i PDF podržava više funkcija nego DVI. Naročito PDF podržava hiperlinkove i jedini način da ih uvede u LaTeX je korišćenjem hyperref. Štaviše, PDF može sadržati i druge podatke o dokumentu kao što je naslov, autor, itd., koji se mogu menjati koristeći ovaj isti paket.
Upotreba
urediOsnovna upotreba sa standardnim podešavanjima je jednostavna. Samo treba učitati paket u preambuli:
\usepackage{hyperref}
|
Ovo će automatski pretvoriti sve vaše unutrašnje reference u hiperlinkove. To neće uticati na pisanje vaših dokumenata: samo nastavite da koristite standardni \label
-\ref
sistem (raspravljanom u poglavlju o Oznakama i referenciranju); sa hyperref "konekcijama" će postati link i moći ćete da kliknete na njih i da vas preusmere na pravu stranicu. Štaviše sadržaj, sista oblika/tabela i indeksa će biti hiperlinkovi takođe. Hiperlinkovi se neće pokazati ako radite u draft režimu rada.
Komande
urediPaket sadrži neke korisne komande za umetanje linkova koji pokazuju van dokumenta.
\hyperref
urediUpotreba:
\hyperref[ознака]{''текст линка''}
|
To će imati isti efekat kao \ref{label_name}
ali će tekst linka biti link. Ove se može kombinovati. Ako je lema označena kao mainlemma broj 4.1.1 sledeći primer bi rezultirao u
Користимо \hyperref[mainlemma]{лему \ref*{mainlemma} }.
|
Koristimo lemu 4.1.1. |
sa linkom kao što je očekivano. Primetite da "*" nakon \ref
služi za izbegavanje grananja linkova.
\url
urediUpotreba:
\url{<my_url>}
|
To će pokazati URL koristeći jednoširinski font i ako kliknete na to, vaš pretraživač će biti otvoren na toj strani.
\href
urediUpotreba:
\href{<my_url>}{<description>}
|
To će pokazati string description koristeći standardni dokument font, ali ako kliknete na to, vaš pretraživač će otvoriti my_url. Evo primera:
\url{http://www.wikibooks.org}
\href{http://www.wikibooks.org}{Wikibooks home}
|
U oba slučaja otvoriće se ista strana, ali u prvom slučaju će biti prikazan URL, dok je u drugom slučaju URL će biti sakriven. Imajte na umu da, ako odštampate dokument, link čuva koristeći \href
i neće nigde biti prikazan u dokumentu.
Druge mogućnosti
urediOsim povezivanje sa sajtovima o kojima smo govorili, hyperref se može koristiti za obezbeđivanja mailto linkova, linkove ka lokalnim datotekama i veze sa bilo kojim PDF izlaznim fajlom.
E-mail adrese
urediMoguće način da se unesu email linkovi je
\href{mailto:my_address@wikibooks.org}{my\_address@wikibooks.org}
|
To samo pokazuje svoju e-mail adresu (tako da ljudi mogu da znaju, čak i ako je dokument štampan na papir) ali, ako čitalac klikne na njega, on(a) lako može da vam pošalje e-mail. Ili, da obuhvati url formatiranje i razbijanje linija prikazanih u tekstu, koristiti [2]
\href{mailto:my_address@wikibooks.org}{\nolinkurl{my_address@wikibooks.org} }
|
Kada koristite ovu formu, imajte na umu da je \nolinkurl
komanda krhka i ako su hiperlinkovi unutar pokretnog argument, onda mora prethoditi \protect
komanda.
Lokalna datoteka
urediFajlovi se takođe mogu linkovati uz pomoć url ili href komandi. Jednostavno treba da dodate string run: na početku linka:
\url{run:/path/to/my/file.ext}
\href{run:/path/to/my/file.ext}{text displayed}
|
Ovo http://tex.stackexchange.com/questions/46488/link-to-local-pdf-file url ne radi uvek, ali href radi stalno.
Moguće je koristiti relativne putanje za povezivanje dokumenata u blizini lokacije vašeg trenutnog dokumenta; da bi to uradili, koristite standardnu Unix-like notaciju (./ trenutni direktorijum, ../ je prethodni direktorijum, itd.)
Hiperlink i Hipertarget
urediTakođe je moguće da se stvori "sidro" bilo gde u dokumentu (sa natpisom ili bez) i da se linkuje. Da biste kreirali "sidro", koristite:
\hypertarget{label}{target caption}
|
i da ga linkujete, koristite:
\hyperlink{label}{link caption}
|
gde su target caption i link caption tekst koji respektivno prikazuje ciljnu lokaciju i "metu".
Prilagođavanje
urediStandardne postavke bi trebalo da bude u redu za većinu korisnika, ali možete i da promenite nešto ako želite. Postoji nekoliko promenljivih i dve metode za njih u pakovanju. Opcije mogu biti donete kao argument paketa kada je napunjen (standardni rad paketa) ili \hypersetup
komanda se može koristiti na sledeći način:
\hypersetup{<option1> [, ...]}
|
možete proći kroz mnoge opcije ako želite; odvojite ih zarezom. Opcije moraju biti u obliku:
variable_name=new_value
|
isti format ima da se koristi ako se prođu te opcije u paketu, dok se učitava, ovako:
\usepackage[<option1, option2>]{hyperref}
|
Ovde je lista mogućih promenljivih koje možete menjati (za kompletnu listu, pogledajte oficijalnu dokumentaciju). Standardne vrednosti su zapisane u uspravnom fontu:
Pogledajte 3.8 Veliku listu na hyperref-manual na tug.org
promenljive | vrednosti | komentar |
---|---|---|
bookmarks | =true,false | prikaži ili sakri traku sa obeleživačima kada prikazuje dokument |
unicode | =false,true | omogućava korišćenje znakova jezika non-Latin sa bazom u Acrobat’s bookmarks |
pdfborder | ={RadiusH RadiusV Width [Dash-Pattern]} | podesite stil ivica oko linka. Prva dva parametra (RadiusH, RadiusV) nemaju efekta u većini pdf čitačima. Width definiše debljinu ivice. Dash-Pattern je niz brojeva odvojen prostor i okružen boks-zagradama. To je opcioni parametar za određivanje dužine svake linije i praznine u obrascu. Na primer, {0 0 0.5 [3 3]} treba da nacrta kvadrat (sa oštrim ćoškovima) širine 0.5 i obrazac sa crticom dužine 3 i praznine 3. Ne postoji jednolikost u tome da li/kako različiti pdf čitači prikazuju obrazac. |
pdftoolbar | =true,false | prikaži ili sakri Acrobat’s toolbar |
pdfmenubar | =true,false | prikaži ili sakri Acrobat’s menu |
pdffitwindow | =true,false | menja veličinu prozora dokumenta na veličinu dokumenta |
pdfstartview | ={FitH},{FitV},etc[3]. | postavlja odgovarajuću širinu stranice u odnosu na prozor |
pdftitle | ={text} | definisati naslov koji treba bude prikazan u "Document Info" prozoru Acrobat |
pdfauthor | ={text} | naziv PDF autora, radi kao ovo iznad iznad |
pdfsubject | ={text} | tema dokumenta, radi kao ovo iznad iznad |
pdfcreator | ={text} | autor dokumenta, radi kao ovo iznad iznad |
pdfproducer | ={text} | producent dokumenta, radi kao ovo iznad iznad |
pdfkeywords | ={text} | lista ključnih reči, odvojenih zarezima, primer iznad |
pdfnewwindow | (=true,false) | definiše da li novi PDF prozor treba da se otvori kada link vodi iz trenutnog dokumenta. Primer: Ova opcija se ignoriše ako link vodi do http/https address. |
pagebackref | (=false,true) | aktivira nazad reference unutar bibliografije. Mora biti naveden kao deo \usepackage{} . |
colorlinks | (=false,true) | okružuju link sa obojenim ramovima (false) ili boje tekst linkova (true). Boja ovih linkova može se podesiti pomoću sledeće opcije (podrazumevane boje su prikazane): |
hidelinks | sakriva linkove (uklanjanje boje i ivice) | |
linkcolor | =red | boja internih linkova (poglavlja, stranica, itd.) |
linktoc | =none,section,page,all | definiše koji deo unesenog teksta u sadržaju je stavljen u link |
citecolor | =green | boja citatnih linkova (bibliografija) |
filecolor | =cyan | boja linkova datoteka |
urlcolor | =magenta | boja URL linkova (mail, web) |
linkbordercolor | ={1 0 0} | boja okvira oko internih linkova (if colorlinks=false) |
citebordercolor | ={0 1 0} | boja okvira oko citata |
urlbordercolor | ={0 1 1} | boja okvira oko URL linkova |
Napominjemo, da je eksplicitna RGB specifikacija dozvoljena samo na graničnim boja (kao linkbordercolor itd.), dok ostali mogu jednostavnim stavljanjem naziva boja (koje možete definisati sami, videti Boje). Da bi se ubrzao proces prilagođavanja, ovde je spisak varijabli sa svojim podrazumevanim vrednostima. Kopirajte ga u dokument ako želite. Pored varijabli, postoji kratka objašnjenja njihovog značenja:
\hypersetup{
bookmarks=true, % приказује bookmarks бар?
unicode=false, % не-Латинске карактери у Acrobat bookmarks-има
pdftoolbar=true, % приказује Acrobat-ову преграду са алаткама?
pdfmenubar=true, % приказује Acrobat-ов мени?
pdffitwindow=false, % погодан прозор када се отвори страница
pdfstartview={FitH}, % уклапа ширину странице према отвореном прозору
pdftitle={My title}, % наслов
pdfauthor={Author}, % аутор
pdfsubject={Subject}, % тема документа
pdfcreator={Creator}, % креатор документа
pdfproducer={Producer}, % продуцент документа
pdfkeywords={keyword1, key2, key3}, % листа кључних речи
pdfnewwindow=true, % линкује у нов PDF прозор
colorlinks=false, % false: уоквири линкове; true: обоји линкове
linkcolor=red, % боја интерних линкова (мења боју оквира са linkbordercolor)
citecolor=green, % боја линкова за библиографију
filecolor=magenta, % боја линкова датотека
urlcolor=cyan % боја спољних линкова
}
|
Ako vam ne treba tako visoko prilagođavanje, ovde su neki mali ali korisni primeri. Kada pravite PDF za štampanje, linkovi u boji nisu dobra stvar jer oni se štapmaju sivo, što otežava čitanje. Možete koristiti boje okvira, koji nisu štampane:
\usepackage{hyperref}
\hypersetup{colorlinks=false}
|
ili da stavite crne linkove:
\usepackage[hidelinks]{hyperref}
|
Kada želite samo da pruži informacije za Document Info sekciju PDF fajla, kao i omogućavanje vraćanje reference unutar bibliografije:
\usepackage[pdfauthor={Име аутора},%
pdftitle={Наслов документа},%
pagebackref=true,%
pdftex]{hyperref}
|
Po podrazumevanim postavkama, URL se štampaju pomoću jednoličnih fontova. Ako vam se to ne dopada i želite da budu odštampani u istom stilu poput ostatka teksta, možete koristiti ovo:
\urlstyle{same}
|
Rešavanje problema
urediProblemi sa Linkovima i Jednačinama 1
urediPoruke poput sledećih
! pdfTeX warning (ext4): destination with the same identifier (name{ equation.1.7.7.30}) has been already used, duplicate ignored
pojavljuju se kada ste napravili nešto slično ovom:
\begin{eqnarray}a=b\nonumber\end{eqnarray}
|
Greška nestaje, ako koristite ovaj obrazac:
\begin{eqnarray*}a=b\end{eqnarray*}
|
Pazite da je broj pokazne linije često potpuno različit od pogrešne linije.
Moguće rešenje: Postavite amsmath paket pre hyperref paketa.
Problemi sa Linkovima i Jednačinama 2
urediPoruke poput sledećih
! Runaway argument? {\@firstoffive }\fi ), Some text from your document here (\ref {re\ETC. Latex Error: Paragraph ended before \Hy@setref@link was complete.
pojavljuju se kada koristite \label
unutar align
okruženja.
Moguće rešenje: Dodajte sledeće u preambuli:
\AtBeginDocument{\let\textlabel\label}
|
Problemi sa Linkovima i Stranicama
urediPoruke kao što su sledeće:
! pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has been already used, duplicate ignored
se pojavljuju kada se brojač bude reinicijalizovan, na primer korišćenjem komande \mainmatter
obezbeđuje klasu knjiga dokumenatu. To resetuje brojač stranice na 1 pre prvog poglavlja knjige. Ali kako predgovor knjige takođe ima stranicu broj 1 svi linkovi za "page 1" nisu više unikatni, otuda obaveštenje "duplicate has been ignored." Kontra mera se sastoji od stavljanjaplainpages=false
u hyperref opcije. Ovo, nažalost, samo pomaže brojaču stranice. Čak radikalnije rešenje za korišćenje opcije hypertexnames=false
, će izazvati prekid linka stranice u indeksu.
Najbolje rešenje je da svaka strana ima jedinstveno ime pomoću \pagenumbering
komande:
\pagenumbering{alph} % a, b, c, ...
... насловна страна, остале ствари ...
\pagenumbering{roman} % i, ii, iii, iv, ...
... садржај, табела фигура, ...
\pagenumbering{arabic} % 1, 2, 3, 4, ...
... почетак главне стране (поглавље 1) ...
|
Još jedno rešenje je korišćenje \pagenumbering{alph}
pre komande \maketitle
, koji će dati naslovnoj strani etiketu- page.a. Pošto je broj stranica potisnut, neće napraviti razliku u izlazu.
Promenom numeracija svaki put pre nego što se brojač resetuje, svaka strana dobija jedinstveno ime. U ovom slučaju, stranice će biti numerisane a, b, c, i, ii, iii, iv, v, 1, 2, 3, 4, 5, ...
Ako ne želite da brojevi stranica budu vidljivi (na primer, na početku materije), koristite \pagestyle{empty} ... \pagestyle{plain}
. Važno je da, iako brojevi nisu vidljivi, svaka strana ima jedinstveno ime.
Drugi, fleksibilniji pristup je da podesite brojač na nešto negativno:
\setcounter{page}{-100}
... насловна страна, остале ствари ...
\pagenumbering{roman} % i, ii, iii, iv, ...
... садржај, табела фигура,, ...
\pagenumbering{arabic} % 1, 2, 3, 4, ...
... почетак главне стране (поглавље 1) ...
|
što će dati na prvim stranicama jedinstveni negativan broj.
Problem se takođe može javiti sa algorithms paketom: jer svaki algoritam koristi istu šemu numeracije, resorni identifikatori za drugi i ostale algoritme će biti duplikati prvog.
Problem se javlja kod identifikatora jednačina ako koristite \nonumber
na svakoj liniji "eqnarray" okruženja. U ovom slučaju, koristite *'ed formu umesto npr. \begin{eqnarray*} ... \end{eqnarray*}
(što je nenumerisan niz jednačina) i uklonite sada nepotrebne \nonumber
komande.
Ako je vaš URL previše dug i prelazi na sledeću stranu, probajte sa breakurl paketom da podelite URL na više linija. Ovo je posebno važno u multikolumn okruženju, gde je širina linija znatno manja.
Problem sa oznakama
urediTekst ne prikazuje oznake uvek onako kao što mi očekujemo. Jer oznake su "samo tekst", sa mnogo manje dostupnih simbola nego običan tekst u LaTeX-u. Hyperref će primetiti taj problem i izbaciti upozorenje:
Package hyperref Warning: Token not allowed in a PDFDocEncoded string:
Sada možete da rešite ovaj problem, tako što ćete dodati tekst za oznake, koji zamenjuje sporni tekst:
\texorpdfstring{''TEX text''}{''Bookmark Text''}
|
Matematički izrazi su glavni kandidat za ovu vrstu problema:
\section{ \texorpdfstring{$E=mc^2$}{E=mc2} }
|
što pretvara \section{$E=mc^2$}
u E=mc2 u zoni markera. Promene boja ne deluju dobro na oznake:
\section{ \textcolor{red}{Red !} }
|
proizvodi string "redRed!". Komanda \textcolor
ignoriše to ali se njen argument (red) štampa.
Ako koristite:
\section{ \texorpdfstring{\textcolor{red}{Red !}}{Red\ !} }
|
rezultat će biti čitljiviji.
Ako ste napisali dokument u unicode i koristili unicode opciju za hyperref paket, možete koristiti unicode simbole u oznakama. Ovo će vam dati mnogo veći izbor znakova kada se koristi \texorpdfstring
.
Problemi sa tabelama i oblicima
urediLinkovi koji su napravljeni uz pomoć hyperref ukazuju na etiketu stvorenu u float okruženju, koja kao što je prethodno opisano, mora uvek biti postavljena nakon naslova. Pošto je naslov je obično ispod figure ili tabele, one same po sebi neće biti vidljive nakon klika na link[4]. Privremeno rešenje postoji pomoću paketa hypcap [1] sa:
\usepackage[all]{hypcap}
|
Obavezno pozovete ovaj paket tek nakon učitavanja hyperref.
Ako koristite wrapfig paket[5] koji je spomenut u "prelamanju teksta" u poglavlju "Figure i natpisi", ili druge slične pakete koji definišu svoje okruženje, moraćete ručno da uključite \capstart
u ovim okruženjima. Na primer:
\begin{wrapfigure}{R}{0.5\textwidth}
\capstart
\begin{center}
\includegraphics[width=0.48\textwidth]{filename}
\end{center}
\caption{\label{labelname}a figure}
\end{wrapfigure}
|
Problemi sa dugom naslovom i \listoffigures ili dugački natpisi
urediPostoji problem kada se koristi \listoffigures
sa hyperref za duge naslove ili duge natpise. To se dešava kada su natpisi (ili naslovi) duži od širine stranice (oko 7-9 reči u zavisnosti od podešavanja). Da biste to ispravili, morate da koristite opciju breaklinks kada prvi put stavljate:
\usepackage[breaklinks]{hyperref}
|
To će onda postaviti reči za sve linkove sa \listoffigures
ispravno.
Problemi sa već postojećim .toc, .lof i sličnim fajlovima
urediFormat nekih od pomoćnih datoteka koje generišu latex, se promene kada se uključi hyperref paket. Stoga se može naići na greške kao što su
! Аргумент \Hy@setref@link већ постоји }.
kada se u dokument stavlja hyperref po prvi put za fajlove koji već postoje. Rešenje problema je da obrišete sve datoteke koje latex koristi za reference i da ih unesete ponovo.
Problem sa fusnotama i specijalnim simbolima
urediPogledajte ovaj deo.
Problemi sa Beamer
urediKoristeći komandu
\hyperref[some_label]{неки текст}
|
dolazi do greške kada se klikne na oznaku. Umesto slanja korisnika na željenu oznaku nakon klika, korisnik će biti poslat na prvi slajd. Postoji jednostavna zaobilaznica ovog problema ; umesto korišćenja:
\phantomsection\label{some_label}
|
da označite vaše slajdove, koristite
\hypertarget{some_label}{}
|
i referencirajte ih sa
\hyperlink{some_label}{неки текст}
|
Problemi sa draft modom
urediUPOZORENjE! Imajte na umu da ako ste aktivirali "draft"-opciju u \documentclass deklaraciji, hiperlinkovi se neće pojavljivati u sadržaju!!!
Reference
uredi- ↑ Hyperref package webpage in CTAN
- ↑ „Email link with hyperref, url packages“. comp.text.tex User Group.
- ↑ Other possible values are defined in the hyperref manual
- ↑ http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/README
- ↑ Wrapfig package webpage in CTAN