
我想在兩個人之間進行對話,每句話前面都有「評論圖示」。透過使用 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}