Unabhängig von der Fehlermeldung: Dein Code enthält unerwünschte Leerzeichen, und zwar an allen Zeilenenden, die nicht einem Makro ohne Argument (oder einem Makro auf der Suche nach einem Argument) folgen. Wie Die vermutlich klar ist durch Deine Verwendung von \note in einer neuen Zeile, wandelt TeX Zeilenenden in Leerzeichen um (außer ihnen folgt ein weiteres Zeilenende, dann werden sie in ein \par umgewandelt). Ich habe die nötigen % eingefügt:
Code:
\documentclass{article}
\makeatletter
\newcommand{\note}[1]{% <= Hier
\@ifundefined{c@notecounter}{\newcounter{notecounter}}{\stepcounter{notecounter}}% <= Hier
\marginpar[\raggedleft\fbox{\texttt{Note \thenotecounter}}]{\raggedright\fbox{\texttt{Note \thenotecounter}}}% <= Hier
\noindent #1% <= Hier unter Umständen auch
}
\makeatother
\begin{document}
Text und eine Randnotiz
\note{1. Randnotiz}
Text
Noch mehr Text
\note{2. Randnotiz}
Text
\end{document}
Ich würde das ganze übrigens ohne den Test schreiben:
Code:
\documentclass{article}
\newcounter{notecounter}
\newcommand{\note}[1]{%
\refstepcounter{notecounter}%
\marginpar
[\raggedleft\fbox{\texttt{Note \thenotecounter}}]
{\raggedright\fbox{\texttt{Note \thenotecounter}}}%
#1%
}
\begin{document}
Text und eine Randnotiz
\note{1. Randnotiz}
Text
Noch mehr Text
\note{2. Randnotiz}
Text
\end{document}
Der Code verwendet \refstepcounter, wodurch man die Notizen auch mit \label und \ref referenzieren könnte, lässt dafür \noindent weg, dessen Zweck mir an dieser Stelle nicht recht einleuchten will. Wird \note in mitten eines Absatzes eingesetzt, hat es sowieso keine Wirkung. Zu Beginn eines Absatzes würde es den Einzug natürlich verhindern.
Grüße
Lesezeichen