Space und ToDoNotes: \reserved@a has an extra }

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Space und ToDoNotes: \reserved@a has an extra }

Beitrag von MoonKid »

Ich nutze setspace Zeilenabstände entsprechend (bzw. annährend) meiner formalen Vorgaben umzusetzen.
Für Notizen nutze ich todonotes

Im Minimalbeispiel ist global ein Zeilenabstand von 1.5 gesetzt. In den Notes soll der aber nur 1 sein.

Bei meiner Lösung bekomme ich aber diesen Fehler und verstehe ihn auch mal wieder nicht.
! Argument of \reserved@a has an extra }.
<inserted text> 
                \par 
l.25 ...ger Kommentar mit einfachem Zeilenabstand}
Das Minimalbeispiel.
\documentclass{scrartcl}
\usepackage{fontspec}

%% Sprache
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}

%% Zeilenabstand
\usepackage{setspace}
\setstretch{1,5} % (typografisch inkorrekt) Word-ig
\recalctypearea

% Notizen\Kommentare
\usepackage[shadow]{todonotes}
\newcommand{\osenf}[1] {%
    \todo[size=\scriptsize]
        { %
            \begin{spacing}{1} % Zeile bitte auskommentieren
                \sffamily #1
            \end{spacing}  % Zeile bitte auskommentieren
        } %
}

\usepackage{blindtext}

\begin{document}
\blindtext[1] \osenf{Mehrzeiliger Kommentar mit einfachem Zeilenabstand}
\end{document}
[/p]
XeLaTeX, TeX Live, vim-latexsuite

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

\documentclass{scrartcl}


\usepackage{setspace}
\setstretch{1,5} % (typografisch inkorrekt) Word-ig
\recalctypearea

% Notizen\Kommentare
\usepackage[shadow]{todonotes}
\newcommand{\osenf}[1] {%
	\todo[size=\small\setstretch{1}]
	{%
			\sffamily #1
	} %
}

\usepackage{blindtext}

\begin{document}
\blindtext[1] \osenf{Mehrzeiliger Kommentar mit einfachem Zeilenabstand}
\end{document}

TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Johannes_B hat geschrieben:
	\todo[size=\small\setstretch{1}]
Das funktioniert. Danke sehr.

Aber es bleibt die Frage, was der Fehler überhaupt bedeutet. Was hab ich falsch gemacht?
XeLaTeX, TeX Live, vim-latexsuite

Gast

Beitrag von Gast »

Der Fehler tritt typischerweise bei Verwendung von zerbrechlichen Befehlen in beweglichen Argumenten auf.

Gast

Beitrag von Gast »

MoonKid hat geschrieben:Was hab ich falsch gemacht?
Du hast »1.8.6 Altering the line spacing of todonotes« in der [d]todonotes[/d]-Anleitung nicht beachtet.

Gast

Beitrag von Gast »

Das Problem im konkreten Fall ist, dass \todo ohne caption den Inhalt als Eintrag selbst ins tdo-Verzeichnis schreiben will. Dabei zerbricht dann \begin{spacing}. Ein ähnliches Problem ist in der [d]todonotes[/d]-Anleitung in Abschnitt 1.8.7 am Beispiel einer minipage erklärt. Eine weitere Lösungsmöglichkeit wäre also beispielsweise caption immer explizit ohne spacing-Umgebung zu setzen:
\newcommand{\osenf}[1] {%
    \todo[size=\scriptsize,caption={#1}]
        { %
            \begin{spacing}{1} % Zeile bitte auskommentieren
                \sffamily #1
            \end{spacing}  % Zeile bitte auskommentieren
        } %
}
Letztlich ist das auch das, was in Abschnitt 1.8.6 der Anleitung gezeigt wird. Dort ist der neue Befehl lediglich noch um die Möglichkeit erweitert, weitere optionale Argumente für \todo zu setzen.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Ich verstehe. (Bin selber überrascht! :D )

Aber an sowas hätte ich nie gedacht. So weit um die Ecke oder mit dem Kopf in der Maschine denk ich als User einfach nie.

Vielen Dank für die Erläuterung!
XeLaTeX, TeX Live, vim-latexsuite

Antworten