LaTeX/Хиперлинкови
LaTeX омогућује припрему за хиперлинкова, што је корисно када је коначан формат ПДФ и хипервезе које се могу пратити. То ради помоћу пакетa hyperref.
Hyperref
уредиПакет hyperref[1] даје LaTeX-у способност да се креира хиперлинк у документу. То ради са командом pdflatex и такође са стандардним "latex" користи са dvips и ghostscript или dvipdfm да направи PDF фајл. Ако га учитате, имаћете могућност да укључите интерактивне екстерне линкове и све своје интерне референце ћете претворити у хиперлинкове. Компајлер pdflatex чини могућим стварање PDF фајлова директно из LaTeX извора и PDF подржава више функција него DVI. Нарочито PDF подржава хиперлинкове и једини начин да их уведе у LaTeX је коришћењем hyperref. Штавише, PDF може садржати и друге податке о документу као што је наслов, аутор, итд., који се могу мењати користећи овај исти пакет.
Употреба
уредиОсновна употреба са стандардним подешавањима је једноставна. Само треба учитати пакет у преамбули:
\usepackage{hyperref}
|
Ово ће аутоматски претворити све ваше унутрашње референце у хиперлинкове. То неће утицати на писање ваших докумената: само наставите да користите стандардни \label
-\ref
систем (расправљаном у поглављу о Ознакама и референцирању); са hyperref "конекцијама" ће постати линк и моћи ћете да кликнете на њих и да вас преусмере на праву страницу. Штавише садржај, систа облика/табела и индекса ће бити хиперлинкови такође. Хиперлинкови се неће показати ако радите у драфт режиму рада.
Команде
уредиПакет садржи неке корисне команде за уметање линкова који показују ван документа.
\hyperref
уредиУпотреба:
\hyperref[ознака]{''текст линка''}
|
То ће имати исти ефекат као \ref{label_name}
али ће текст линка бити линк. Ове се може комбиновати. Ако је лема означена као mainlemma број 4.1.1 следећи пример би резултирао у
Користимо \hyperref[mainlemma]{лему \ref*{mainlemma} }.
|
Користимо лему 4.1.1. |
са линком као што је очекивано. Приметите да "*" након \ref
служи за избегавање гранања линкова.
\url
уредиУпотреба:
\url{<my_url>}
|
То ће показати УРЛ користећи једноширински фонт и ако кликнете на то, ваш претраживач ће бити отворен на тој страни.
\href
уредиУпотреба:
\href{<my_url>}{<description>}
|
То ће показати стринг description користећи стандардни документ фонт, али ако кликнете на то, ваш претраживач ће отворити my_url. Ево примера:
\url{http://www.wikibooks.org}
\href{http://www.wikibooks.org}{Wikibooks home}
|
У оба случаја отвориће се иста страна, али у првом случају ће бити приказан УРЛ, док је у другом случају УРЛ ће бити сакривен. Имајте на уму да, ако одштампате документ, линк чува користећи \href
и неће нигде бити приказан у документу.
Друге могућности
уредиОсим повезивање са сајтовима о којима смо говорили, hyperref се може користити за обезбеђивања mailto линкова, линкове ка локалним датотекама и везе са било којим PDF излазним фајлом.
E-mail адресе
уредиМогуће начин да се унесу емаил линкови је
\href{mailto:my_address@wikibooks.org}{my\_address@wikibooks.org}
|
То само показује своју е-маил адресу (тако да људи могу да знају, чак и ако је документ штампан на папир) али, ако читалац кликне на њега, он(а) лако може да вам пошаље е-маил. Или, да обухвати url форматирање и разбијање линија приказаних у тексту, користити [2]
\href{mailto:my_address@wikibooks.org}{\nolinkurl{my_address@wikibooks.org} }
|
Када користите ову форму, имајте на уму да је \nolinkurl
команда крхка и ако су хиперлинкови унутар покретног аргумент, онда мора претходити \protect
команда.
Локална датотека
уредиФајлови се такође могу линковати уз помоћ url или href команди. Једноставно треба да додате стринг run: на почетку линка:
\url{run:/path/to/my/file.ext}
\href{run:/path/to/my/file.ext}{text displayed}
|
Ово http://tex.stackexchange.com/questions/46488/link-to-local-pdf-file url не ради увек, али href ради стално.
Могуће је користити релативне путање за повезивање докумената у близини локације вашег тренутног документа; да би то урадили, користите стандардну Unix-like нотацију (./ тренутни директоријум, ../ је претходни директоријум, итд.)
Хиперлинк и Хипертаргет
уредиТакође је могуће да се створи "сидро" било где у документу (са натписом или без) и да се линкује. Да бисте креирали "сидро", користите:
\hypertarget{label}{target caption}
|
и да га линкујете, користите:
\hyperlink{label}{link caption}
|
где су target caption и link caption текст који респективно приказује циљну локацију и "мету".
Прилагођавање
уредиСтандардне поставке би требало да буде у реду за већину корисника, али можете и да промените нешто ако желите. Постоји неколико променљивих и две методе за њих у паковању. Опције могу бити донете као аргумент пакета када је напуњен (стандардни рад пакета) или \hypersetup
команда се може користити на следећи начин:
\hypersetup{<option1> [, ...]}
|
можете проћи кроз многе опције ако желите; одвојите их зарезом. Опције морају бити у облику:
variable_name=new_value
|
исти формат има да се користи ако се прођу те опције у пакету, док се учитава, овако:
\usepackage[<option1, option2>]{hyperref}
|
Овде је листа могућих променљивих које можете мењати (за комплетну листу, погледајте официјалну документацију). Стандардне вредности су записане у усправном фонту:
Погледајте 3.8 Велику листу на hyperref-manual на tug.org
променљиве | вредности | коментар |
---|---|---|
bookmarks | =true,false | прикажи или сакри траку са обележивачима када приказује документ |
unicode | =false,true | омогућава коришћење знакова језика non-Latin са базом у Acrobat’s bookmarks |
pdfborder | ={RadiusH RadiusV Width [Dash-Pattern]} | подесите стил ивица око линка. Прва два параметра (RadiusH, RadiusV) немају ефекта у већини pdf читачима. Width дефинише дебљину ивице. Dash-Pattern је низ бројева одвојен простор и окружен бокс-заградама. То је опциони параметар за одређивање дужине сваке линије и празнине у обрасцу. На пример, {0 0 0.5 [3 3]} треба да нацрта квадрат (са оштрим ћошковима) ширине 0.5 и образац са цртицом дужине 3 и празнине 3. Не постоји једноликост у томе да ли/како различити pdf читачи приказују образац. |
pdftoolbar | =true,false | прикажи или сакри Acrobat’s toolbar |
pdfmenubar | =true,false | прикажи или сакри Acrobat’s menu |
pdffitwindow | =true,false | мења величину прозора документа на величину документа |
pdfstartview | ={FitH},{FitV},etc[3]. | поставља одговарајућу ширину странице у односу на прозор |
pdftitle | ={text} | дефинисати наслов који треба буде приказан у "Document Info" прозору Acrobat |
pdfauthor | ={text} | назив PDF аутора, ради као ово изнад изнад |
pdfsubject | ={text} | тема документа, ради као ово изнад изнад |
pdfcreator | ={text} | аутор документа, ради као ово изнад изнад |
pdfproducer | ={text} | продуцент документа, ради као ово изнад изнад |
pdfkeywords | ={text} | листа кључних речи, одвојених зарезима, пример изнад |
pdfnewwindow | (=true,false) | дефинише да ли нови PDF прозор треба да се отвори када линк води из тренутног документа. Пример: Ова опција се игнорише ако линк води до http/https address. |
pagebackref | (=false,true) | активира назад референце унутар библиографије. Мора бити наведен као део \usepackage{} . |
colorlinks | (=false,true) | окружују линк са обојеним рамовима (false) или боје текст линкова (true). Боја ових линкова може се подесити помоћу следеће опције (подразумеване боје су приказане): |
hidelinks | сакрива линкове (уклањање боје и ивице) | |
linkcolor | =red | боја интерних линкова (поглавља, страница, итд.) |
linktoc | =none,section,page,all | дефинише који део унесеног текста у садржају је стављен у линк |
citecolor | =green | боја цитатних линкова (библиографија) |
filecolor | =cyan | боја линкова датотека |
urlcolor | =magenta | боја URL линкова (mail, web) |
linkbordercolor | ={1 0 0} | боја оквира око интерних линкова (if colorlinks=false) |
citebordercolor | ={0 1 0} | боја оквира око цитата |
urlbordercolor | ={0 1 1} | боја оквира око URL линкова |
Напомињемо, да је експлицитна RGB спецификација дозвољена само на граничним боја (као linkbordercolor итд.), док остали могу једноставним стављањем назива боја (које можете дефинисати сами, видети Боје). Да би се убрзао процес прилагођавања, овде је списак варијабли са својим подразумеваним вредностима. Копирајте га у документ ако желите. Поред варијабли, постоји кратка објашњења њиховог значења:
\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 % боја спољних линкова
}
|
Ако вам не треба тако високо прилагођавање, овде су неки мали али корисни примери. Када правите PDF за штампање, линкови у боји нису добра ствар јер они се штапмају сиво, што отежава читање. Можете користити боје оквира, који нису штампане:
\usepackage{hyperref}
\hypersetup{colorlinks=false}
|
или да ставите црне линкове:
\usepackage[hidelinks]{hyperref}
|
Када желите само да пружи информације за Document Info секцију PDF фајла, као и омогућавање враћање референце унутар библиографије:
\usepackage[pdfauthor={Име аутора},%
pdftitle={Наслов документа},%
pagebackref=true,%
pdftex]{hyperref}
|
По подразумеваним поставкама, URL се штампају помоћу једноличних фонтова. Ако вам се то не допада и желите да буду одштампани у истом стилу попут остатка текста, можете користити ово:
\urlstyle{same}
|
Решавање проблема
уредиПроблеми са Линковима и Једначинама 1
уредиПоруке попут следећих
! pdfTeX warning (ext4): destination with the same identifier (name{ equation.1.7.7.30}) has been already used, duplicate ignored
појављују се када сте направили нешто слично овом:
\begin{eqnarray}a=b\nonumber\end{eqnarray}
|
Грешка нестаје, ако користите овај образац:
\begin{eqnarray*}a=b\end{eqnarray*}
|
Пазите да је број показне линије често потпуно различит од погрешне линије.
Могуће решење: Поставите amsmath пакет пре hyperref пакета.
Проблеми са Линковима и Једначинама 2
уредиПоруке попут следећих
! Runaway argument? {\@firstoffive }\fi ), Some text from your document here (\ref {re\ETC. Latex Error: Paragraph ended before \Hy@setref@link was complete.
појављују се када користите \label
унутар align
окружења.
Могуће решење: Додајте следеће у преамбули:
\AtBeginDocument{\let\textlabel\label}
|
Проблеми са Линковима и Страницама
уредиПоруке као што су следеће:
! pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has been already used, duplicate ignored
се појављују када се бројач буде реиницијализован, на пример коришћењем команде \mainmatter
обезбеђује класу књига докуменату. То ресетује бројач странице на 1 пре првог поглавља књиге. Али како предговор књиге такође има страницу број 1 сви линкови за "page 1" нису више уникатни, отуда обавештење "duplicate has been ignored." Контра мера се састоји од стављањаplainpages=false
у hyperref опције. Ово, нажалост, само помаже бројачу странице. Чак радикалније решење за коришћење опције hypertexnames=false
, ће изазвати прекид линка странице у индексу.
Најбоље решење је да свака страна има јединствено име помоћу \pagenumbering
команде:
\pagenumbering{alph} % a, b, c, ...
... насловна страна, остале ствари ...
\pagenumbering{roman} % i, ii, iii, iv, ...
... садржај, табела фигура, ...
\pagenumbering{arabic} % 1, 2, 3, 4, ...
... почетак главне стране (поглавље 1) ...
|
Још једно решење је коришћење \pagenumbering{alph}
пре команде \maketitle
, који ће дати насловној страни етикету- page.a. Пошто је број страница потиснут, неће направити разлику у излазу.
Променом нумерација сваки пут пре него што се бројач ресетује, свака страна добија јединствено име. У овом случају, странице ће бити нумерисане a, b, c, i, ii, iii, iv, v, 1, 2, 3, 4, 5, ...
Ако не желите да бројеви страница буду видљиви (на пример, на почетку материје), користите \pagestyle{empty} ... \pagestyle{plain}
. Важно је да, иако бројеви нису видљиви, свака страна има јединствено име.
Други, флексибилнији приступ је да подесите бројач на нешто негативно:
\setcounter{page}{-100}
... насловна страна, остале ствари ...
\pagenumbering{roman} % i, ii, iii, iv, ...
... садржај, табела фигура,, ...
\pagenumbering{arabic} % 1, 2, 3, 4, ...
... почетак главне стране (поглавље 1) ...
|
што ће дати на првим страницама јединствени негативан број.
Проблем се такође може јавити са algorithms пакетом: јер сваки алгоритам користи исту шему нумерације, ресорни идентификатори за други и остале алгоритме ће бити дупликати првог.
Проблем се јавља код идентификатора једначина ако користите \nonumber
на свакој линији "eqnarray" окружења. У овом случају, користите *'ed форму уместо нпр. \begin{eqnarray*} ... \end{eqnarray*}
(што је ненумерисан низ једначина) и уклоните сада непотребне \nonumber
команде.
Ако је ваш URL превише дуг и прелази на следећу страну, пробајте са breakurl пакетом да поделите URL на више линија. Ово је посебно важно у мултиколумн окружењу, где је ширина линија знатно мања.
Проблем са ознакама
уредиТекст не приказује ознаке увек онако као што ми очекујемо. Јер ознаке су "само текст", са много мање доступних симбола него обичан текст у LaTeX-у. Hyperref ће приметити тај проблем и избацити упозорење:
Package hyperref Warning: Token not allowed in a PDFDocEncoded string:
Сада можете да решите овај проблем, тако што ћете додати текст за ознаке, који замењује спорни текст:
\texorpdfstring{''TEX text''}{''Bookmark Text''}
|
Математички изрази су главни кандидат за ову врсту проблема:
\section{ \texorpdfstring{$E=mc^2$}{E=mc2} }
|
што претвара \section{$E=mc^2$}
у E=mc2 у зони маркера. Промене боја не делују добро на ознаке:
\section{ \textcolor{red}{Red !} }
|
производи стринг "redRed!". Команда \textcolor
игнорише то али се њен аргумент (red) штампа.
Ако користите:
\section{ \texorpdfstring{\textcolor{red}{Red !}}{Red\ !} }
|
резултат ће бити читљивији.
Ако сте написали документ у unicode и користили unicode опцију за hyperref пакет, можете користити unicode симболе у ознакама. Ово ће вам дати много већи избор знакова када се користи \texorpdfstring
.
Проблеми са табелама и облицима
уредиЛинкови који су направљени уз помоћ hyperref указују на етикету створену у float окружењу, која као што је претходно описано, мора увек бити постављена након наслова. Пошто је наслов је обично испод фигуре или табеле, оне саме по себи неће бити видљиве након клика на линк[4]. Привремено решење постоји помоћу пакета hypcap [1] са:
\usepackage[all]{hypcap}
|
Обавезно позовете овај пакет тек након учитавања hyperref.
Ако користите wrapfig пакет[5] који је споменут у "преламању текста" у поглављу "Фигуре и натписи", или друге сличне пакете који дефинишу своје окружење, мораћете ручно да укључите \capstart
у овим окружењима. На пример:
\begin{wrapfigure}{R}{0.5\textwidth}
\capstart
\begin{center}
\includegraphics[width=0.48\textwidth]{filename}
\end{center}
\caption{\label{labelname}a figure}
\end{wrapfigure}
|
Проблеми са дугом насловом и \listoffigures или дугачки натписи
уредиПостоји проблем када се користи \listoffigures
са hyperref за дуге наслове или дуге натписе. То се дешава када су натписи (или наслови) дужи од ширине странице (око 7-9 речи у зависности од подешавања). Да бисте то исправили, морате да користите опцију breaklinks када први пут стављате:
\usepackage[breaklinks]{hyperref}
|
То ће онда поставити речи за све линкове са \listoffigures
исправно.
Проблеми са већ постојећим .toc, .lof и сличним фајловима
уредиФормат неких од помоћних датотека које генеришу latex, се промене када се укључи hyperref пакет. Стога се може наићи на грешке као што су
! Аргумент \Hy@setref@link већ постоји }.
када се у документ ставља hyperref по први пут за фајлове који већ постоје. Решење проблема је да обришете све датотеке које latex користи за референце и да их унесете поново.
Проблем са фуснотама и специјалним симболима
уредиПогледајте овај део.
Проблеми са Beamer
уредиКористећи команду
\hyperref[some_label]{неки текст}
|
долази до грешке када се кликне на ознаку. Уместо слања корисника на жељену ознаку након клика, корисник ће бити послат на први слајд. Постоји једноставна заобилазница овог проблема ; уместо коришћења:
\phantomsection\label{some_label}
|
да означите ваше слајдове, користите
\hypertarget{some_label}{}
|
и референцирајте их са
\hyperlink{some_label}{неки текст}
|
Проблеми са draft модом
уредиУПОЗОРЕЊЕ! Имајте на уму да ако сте активирали "draft"-опцију у \documentclass декларацији, хиперлинкови се неће појављивати у садржају!!!
Референце
уреди- ↑ 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