Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen
MoonKid
Forum-Meister
Beiträge: 689 Registriert: Sa 30. Jun 2012, 11:56
Beitrag
von MoonKid » Fr 14. Apr 2017, 09:57
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
Johannes_B
Moderator
Beiträge: 5079 Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:
Beitrag
von Johannes_B » Fr 14. Apr 2017, 10:05
\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
Beiträge: 689 Registriert: Sa 30. Jun 2012, 11:56
Beitrag
von MoonKid » Fr 14. Apr 2017, 10:49
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 » Fr 14. Apr 2017, 11:11
Der Fehler tritt typischerweise bei Verwendung von zerbrechlichen Befehlen in beweglichen Argumenten auf.
Gast
Beitrag
von Gast » Fr 14. Apr 2017, 11:16
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 » Fr 14. Apr 2017, 11:31
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
Beiträge: 689 Registriert: Sa 30. Jun 2012, 11:56
Beitrag
von MoonKid » Fr 14. Apr 2017, 14:24
Ich verstehe. (Bin selber überrascht!
)
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