Warum werden Leerzeichen bei der Expansion meines commands erzeugt und wie behebe ich das?
> ***
> Duplikat zu:
> [Was sollen die Kommentarzeichen (%) am Ende der Zeile?](http://texwelt.de/wissen/fragen/16/was-sollen-die-kommentar-zeichen-am-ende-der-zeilen)
> ***
Ich habe mir ein command definiert, das prüft, ob der erste optuonale Parameter gesetzt wird und dann entsprechend anders expandieren soll. Konkret definiere ich für eine mit tikz gesetzte Node ein Label und möchte es dann im Text referenzieren und zur Node springen. Das Problem, was ich habe ist, dass nun bei der Referenzierung im Text davor Leerzeichen bzw. Freiraum gesetzt wird. Wenn ich "manuell" referenziere, erscheint kein Freiraum. Warum passiert das und wie kann ich das verhindern?
Hier mein Beispiel:
\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{hyperref}
\newcommand{\labelNode}[2][]{ %
\def\empty{}
\def\temp{#1}
\ifx\temp\empty
\node[draw] {#2};
\else
\node[draw] (#1) {\raisebox{2ex}[0pt]{\hypertarget{meta:\detokenize{#1}}{}}#2
\label{lbl:meta:\detokenize{#1}}};
\fi
}
\newcommand{\nodeRef}[2][]{
\def\empty{} %
\def\temp{#1} %
\ifx\temp\empty %
\texttt{#2} %
\else %
\hyperlink{meta:\detokenize{#1}}{\texttt{#2}} %
\fi %
}
\begin{document}
\section{First}
\subsection{Second}
\begin{tikzpicture}
\labelNode[foobar]{FooBar};
\end{tikzpicture}
Und im Text wird \nodeRef[foobar]{FooBar} nun mit Leerzeichen referenziert.
Nun aber die nodeRef ohne Verwendung des Kommandos:
\hyperlink{meta:foobar}{\texttt{FooBar}}.
Liegt auf Seite \pageref{lbl:meta:foobar}, im Abschnitt \ref{lbl:meta:foobar} .
\end{document}