# im \newcommand darf nicht escaped sein

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: # im \newcommand darf nicht escaped sein

# im \newcommand darf nicht escaped sein

von IrenaSekuta » Mi 6. Okt 2010, 21:59

Hallo zusammen,

anbei mein Minimalbeispiel und die Testdatei, mit dem mein Vorhaben deutlich wird:
\begin{filecontents}{Testdoc.aux}
\relax 
\catcode`"\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax 
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\select@language{ngerman}
\@writefile{toc}{\select@language{ngerman}}
\@writefile{lof}{\select@language{ngerman}}
\@writefile{lot}{\select@language{ngerman}}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Hauptband}{1}{chapter.1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{Kap001}{{1}{1}{Hauptband\relax }{chapter.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Fehlerbaummanalyse}{3}{chapter.2}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{Kap002}{{2}{3}{Fehlerbaummanalyse\relax }{chapter.2}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Quantifizierung}{5}{chapter.3}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{Kap003}{{3}{5}{Quantifizierung\relax }{chapter.3}{}}
\end{filecontents}


\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage{xr}
\usepackage{varioref}
\usepackage{hyperref}

% Angabe der externen Datei (Paket xr). Befehl erwartet die Datei Testdoc.aux
\externaldocument{Testdoc}

% Eigener Befehl
\newcommand{\Kapitel}[1]{\href{Testdoc##1}{Kapitel \vref{#1}}}

\begin{document}

Wie in \href{Testdoc#Kap002}{Kapitel \vref{Kap002}} beschrieben.   % <--- funktioniert

In \Kapitel{Kap003} aufgeführt... % <--- funktioniert aufgrund ##1 in \newcommand{\Kapitel}[1]{...} nicht. Auch \##1 funktioniert nicht...

\end{document}
Ich möchte innerhalb meines Latex-Dokumentes auf ein anderes Latexdokument verweisen und bediene mich des Paketes "xr".

Nun möchte ich innerhalb meiner PDF-Datei, dass der Verweis auch verlinkt ist. Dazu nutze ich den Befehl
\href{Dateiname#Label}{TEXT}
Der Befehl an sich funktioniert auch. Nun möchte ich aber einen eigenen Befehl entwerfen "\Kapitel", der den im Minimalbeispiel aufgeführten Code ausführt. Das Problem ist nun, dass der Befehl \href ein "#" erwartet, was nach hyperref-Doku nicht escaped werden muss. Mein Parameter in "\newcommand" wird aber auch mit "#1" aufgerufen. Aber
\newcommand{\Kapitel}[1]{\href{Dateiname##1}{Kapitel \vref{#1}}}
funktioniert aber nicht.

Hat jemand eine Idee?

Gruß,

Irena
Dateianhänge
Testdoc.pdf
(64.07 KiB) 579-mal heruntergeladen

Nach oben