Discussion:
hyperrefs \href mit Sonderzeichen in Argumenten
(zu alt für eine Antwort)
Torsten Bronger
2004-06-21 07:47:55 UTC
Permalink
Halloechen!

Das folgende

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\begin{figure}
\caption{\href{http://mein.url/index.html#anfang}{Hier}}
\end{figure}
\end{document}

erzeugt einen Fehler, weil \href mit Sonderzeichen (in diesem Fall
#) nicht in \caption (oder in anderen Befehlen) verwendet werden
darf. Fuer \url gab es eine Loesung, indem man vorher mit \urldef
(oder so aehnlich) sich einen Befehl mit dem URL definierte, und
den konnte man dan ueberall verwenden.

Gibt's sowas auch fuer \href?

Vielen Dank!

Tschoe,
Torsten.
--
Torsten Bronger, aquisgrana, europa vetus
Andreas Matthias
2004-06-21 08:24:58 UTC
Permalink
Post by Torsten Bronger
\caption{\href{http://mein.url/index.html#anfang}{Hier}}
erzeugt einen Fehler, weil \href mit Sonderzeichen (in diesem Fall
#) nicht in \caption (oder in anderen Befehlen) verwendet werden
darf.
Verwende \#.

Ciao
Andreas
Torsten Bronger
2004-06-21 09:03:37 UTC
Permalink
Halloechen!
Post by Andreas Matthias
Post by Torsten Bronger
\caption{\href{http://mein.url/index.html#anfang}{Hier}}
erzeugt einen Fehler, weil \href mit Sonderzeichen (in diesem
Fall #) nicht in \caption (oder in anderen Befehlen) verwendet
werden darf.
Verwende \#.
Leider habe ich diese Option nicht, weil ich das LaTeX aus einem
Programm heraus erzeuge und bestenfalls ein \char... erhalten
koennte.

Tschoe,
Torsten.
--
Torsten Bronger, aquisgrana, europa vetus
Heiko Oberdiek
2004-06-21 10:03:12 UTC
Permalink
Post by Torsten Bronger
Halloechen!
Post by Andreas Matthias
Post by Torsten Bronger
\caption{\href{http://mein.url/index.html#anfang}{Hier}}
erzeugt einen Fehler, weil \href mit Sonderzeichen (in diesem
Fall #) nicht in \caption (oder in anderen Befehlen) verwendet
werden darf.
Verwende \#.
Leider habe ich diese Option nicht, weil ich das LaTeX aus einem
Programm heraus erzeuge und bestenfalls ein \char... erhalten
koennte.
Dann hilft dir \urldef ja auch nicht weiter. Sonst haettest du
\href ja in ein Makro packen koennen.
Vielleicht kannst du ja \caption umdefinieren, so dass
es zuerst den Catcode von # umstellt und dann erst sein
Argument einliest.

Viele Gruesse
Heiko <***@uni-freiburg.de>
Torsten Bronger
2004-06-21 16:16:38 UTC
Permalink
Halloechen!
Post by Heiko Oberdiek
Post by Torsten Bronger
Post by Andreas Matthias
Post by Torsten Bronger
\caption{\href{http://mein.url/index.html#anfang}{Hier}}
erzeugt einen Fehler, weil \href mit Sonderzeichen (in diesem
Fall #) nicht in \caption (oder in anderen Befehlen) verwendet
werden darf.
Verwende \#.
Leider habe ich diese Option nicht, weil ich das LaTeX aus einem
Programm heraus erzeuge und bestenfalls ein \char... erhalten
koennte.
Dann hilft dir \urldef ja auch nicht weiter. Sonst haettest du
\href ja in ein Makro packen koennen.
Mit \urldef koennte ich folgendes machen:

\documentclass{article}
\usepackage{url}
\urldef{\myurl}\url|httl://www.test.test#Hallo|
\begin{document}
\begin{figure}
\caption{\myurl}
\end{figure}
\end{document}

Ein Umbiegen der Catcodes waere zwar nur fuer #%~ noetig, aber
sowas kommt ja nicht nur in Bildunterschriften vor, und dann wird's
haarig ...

Tschoe,
Torsten.
--
Torsten Bronger, aquisgrana, europa vetus
Heiko Oberdiek
2004-06-21 16:34:18 UTC
Permalink
Post by Torsten Bronger
Post by Heiko Oberdiek
Dann hilft dir \urldef ja auch nicht weiter. Sonst haettest du
\href ja in ein Makro packen koennen.
\documentclass{article}
\usepackage{url}
\urldef{\myurl}\url|httl://www.test.test#Hallo|
\begin{document}
\begin{figure}
\caption{\myurl}
\end{figure}
\end{document}
Ein Umbiegen der Catcodes waere zwar nur fuer #%~ noetig, aber
sowas kommt ja nicht nur in Bildunterschriften vor, und dann wird's
haarig ...
\documentclass{article}
\usepackage{hyperref}
\begingroup
\catcode`\#=12 %
\gdef\myurl{\href{http://www.test.test#Hallo}}
\endgroup
\begin{document}
\begin{figure}
\caption{\myurl{Welt}}
\end{figure}
\end{document}

Viele Gruesse
Heiko <***@uni-freiburg.de>

Andreas Matthias
2004-06-21 13:45:08 UTC
Permalink
Post by Torsten Bronger
Post by Andreas Matthias
Post by Torsten Bronger
\caption{\href{http://mein.url/index.html#anfang}{Hier}}
erzeugt einen Fehler, weil \href mit Sonderzeichen (in diesem
Fall #) nicht in \caption (oder in anderen Befehlen) verwendet
werden darf.
Verwende \#.
Leider habe ich diese Option nicht, weil ich das LaTeX aus einem
Programm heraus erzeuge und bestenfalls ein \char... erhalten
koennte.
Probiere mal das:

\let\origcaption\caption
\begingroup
\catcode`\#\active
\gdef#{\#}
\endgroup

\def\caption{
\begingroup
\catcode`\#\active
\afterassignment\***@i\toks@
}

\def\***@i{
\expandafter\origcaption\expandafter{\the\toks@}
\endgroup
}

Ciao
Andreas
Lesen Sie weiter auf narkive:
Loading...