Seite 1 von 1

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

Verfasst: Fr 14. Apr 2017, 09:57
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]

Verfasst: Fr 14. Apr 2017, 10:05
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}


Verfasst: Fr 14. Apr 2017, 10:49
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?

Verfasst: Fr 14. Apr 2017, 11:11
von Gast
Der Fehler tritt typischerweise bei Verwendung von zerbrechlichen Befehlen in beweglichen Argumenten auf.

Verfasst: Fr 14. Apr 2017, 11:16
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.

Verfasst: Fr 14. Apr 2017, 11:31
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.

Verfasst: Fr 14. Apr 2017, 14:24
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!