# im \newcommand darf nicht escaped sein

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

# im \newcommand darf nicht escaped sein

Beitrag von IrenaSekuta »

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) 562-mal heruntergeladen
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6