
Я хочу сделать диалог между двумя людьми со "значком комментирования" перед каждым предложением. Я добился желаемого, используя пакеты enumitem и fontawesome.
Вот мой код на данный момент.
\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}
Теперь я хотел бы определить его как новую среду, чтобы использовать это несколько раз. Я знаю, что есть команда \labelitemi, но она вносит изменения для всех элементов, для этого я не уверен, как это сделать.
Я поискал старые вопросы и нашелэтотно не смог понять, как сделать так, чтобы они подходили к моему случаю.
решение1
Вот решение с \newtoggle
командой из etoolbox
. Чтобы упростить использование этого решения, я определил новую среду, похожую на itemize, 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}
решение2
Вы можете создать команду, которая изменяет свое собственное определение, и использовать ее в качестве метки, например, так:
\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}