
Ich möchte einen Dialog zwischen zwei Personen erstellen, bei dem vor jedem Satz ein „Kommentarsymbol“ steht. Ich habe mein Ziel einigermaßen erreicht, indem ich die Pakete enumitem und fontawesome verwendet habe.
Hier ist mein bisheriger Code.
\documentclass{article}
\usepackage{enumitem}
\usepackage{fontawesome}
\usepackage{xcolor}
\begin{document}
\begin{itemize}
\item[\color{blue!70!white}\faCommenting] First person
\item[\color{green!70!black}\faCommentingO] Second person
\item[\color{blue!70!white}\faCommenting] First person
\end{itemize}
\end{document}
Jetzt möchte ich es als neue Umgebung definieren, um es mehrfach verwenden zu können. Ich weiß, dass es einen \labelitemi-Befehl gibt, aber dieser nimmt Änderungen für alle Elemente vor. Ich bin mir nicht sicher, wie ich das machen soll.
Ich habe nach alten Fragen gesucht und festgestelltDasaber ich habe die Schritte nicht verstanden, mit denen ich sie auf meinen Fall abstimmen kann.
Antwort1
Hier ist eine Lösung mit dem \newtoggle
Befehl von etoolbox
. Um die Verwendung dieser Lösung zu vereinfachen, habe ich eine neue itemize-ähnliche Umgebung definiert alternitem
:
\documentclass{article}
\usepackage{enumitem}
\usepackage{fontawesome}
\usepackage{xcolor}
\usepackage{etoolbox}
%
\newtoggle{greeny}
\newlist{alternitem}{itemize}{1}
\setlist[alternitem]{label={\iftoggle{greeny}%
{\color{green!70!black}\faCommentingO\global\togglefalse{greeny}}%
{\color{blue!70!white}\faCommenting\global\toggletrue{greeny}}%
}}
\begin{document}
\begin{alternitem}
\item First person
\item Second person
\item First person
\item First person
\item Second person
\item First person
\end{alternitem}
\end{document}
Antwort2
Sie können einen Befehl erstellen, der seine eigene Definition ändert, und diese als Bezeichnung verwenden, beispielsweise wie folgt:
\documentclass{article}
\usepackage{enumitem}
\usepackage{fontawesome}
\usepackage{xcolor}
\makeatletter
\def\speech@bubble@a{%
\color{blue!70!white}\faCommenting
\global\let\speech@bubble\speech@bubble@b
}
\def\speech@bubble@b{%
\color{green!70!black}\faCommentingO
\global\let\speech@bubble\speech@bubble@a
}
\newlist{dialog}{itemize}{1}
\newlist{dialog*}{itemize}{1}
\setlist[dialog]{
before={\global\let\speech@bubble\speech@bubble@a},
label={\speech@bubble},
}
\setlist[dialog*]{
before={\global\let\speech@bubble\speech@bubble@b},
label={\speech@bubble},
}
\makeatother
\begin{document}
First person first:
\begin{dialog}
\item bla
\item bla
\item bla
\item bla
\item bla
\end{dialog}
Second person first:
\begin{dialog*}
\item bla
\item bla
\item bla
\item bla
\item bla
\end{dialog*}
\end{document}