Tammo 80

Home / Weblog / Java / Reizen / Taalverhaspelingen

26 June 2008

Autoref

Jawel, m’n weblog wordt met de dag saaier. Hierbij een stuk code, gebaseerd op dit bericht in een nieuwsgroep. Het geeft een idee wat wij LaTeXgebruikers moeten doorstaan om bepaalde dingen voor elkaar te krijgen.

Laat ik even zeggen wat ik wilde. Met het pakket hyperref worden verwijzingen aanklikbaar. Nadeel hiervan is dat in de verwijzing hoofdstuk 1 alleen de 1 aanklikbaar wordt. Voor minder geoefende muizers is dit een wat klein klikdoel. Mooier zou het zijn als heel de tekst hoofdstuk 1 een link was. Dat kan met het commando autoref, dat al zit ingebakken in hyperref. Nu moet alleen hyperref zelf het woord figuur bedenken. Dit is weliswaar in te stellen, maar het moet in alle gevallen gelijk zijn. Dat is een nadeel, want soms (aan het begin van een zin) wil je Figuur in plaats van figuur. Hiervoor zou een commando Autoref wel handig zijn.

Na een uur prutsen werkt dat nu, en misschien kan ik iemand anders dat uur besparen. Hierbij de volledige ellende (met veel dank aan Arthur):

\usepackage{textcase}
\newcommand{\titlecase}[1]{\expandafter\MakeTextUppercase#1}
\makeatletter
\DeclareRobustCommand*{\Autoref}{%
\@ifstar{\HyRef@Autoref\@gobbletwo}{\HyRef@Autoref\hyper@@link}%
}
\def\HyRef@Autoref#1#2{%
\begingroup
\Hy@safe@activestrue
\expandafter\HyRef@Autosetref\csname r@#2\endcsname{#2}{#1}%
\endgroup
}
\def\HyRef@Autosetref#1#2#3{% link command, csname, refname
\HyRef@ShowKeysRef{#2}%
\ifcase 0\ifx#1\relax 1\fi\ifx#1\Hy@varioref@undefined 1\fi\relax
\edef\HyRef@thisref{\expandafter\@fourthoffive#1\@empty\@empty\@empty}%
\expandafter\HyRef@testreftype\HyRef@thisref.\\%
\Hy@safe@activesfalse
#3{%
\expandafter\@fifthoffive#1\@empty\@empty\@empty
}{%
\expandafter\@fourthoffive#1\@empty\@empty\@empty
}{%
\expandafter\expandafter%
\expandafter\titlecase\expandafter%
\expandafter%
\HyRef@currentHtag\expandafter\@firstoffive#1\@empty\@empty\@empty\null%
% \HyRef@currentHtag
% \expandafter\@firstoffive#1\@empty\@empty\@empty
% \null
}%
\else
\protect\G@refundefinedtrue
\nfss@text{\reset@font\bfseries ??}%
\@latex@warning{%
Reference `#2' on page \thepage\space undefined%
}%
\fi
}
\makeatother

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment