我想知道是否可以按字母顺序排列项目并为其添加颜色。这是上一个问题的延伸。 按字母顺序显示 itemize 中的项目
以下是 MWE:
\documentclass{article}
\usepackage{datatool}% http://ctan.org/pkg/datatool
\newcommand{\sortitem}[1]{%
\DTLnewrow{list}% Create a new entry
\DTLnewdbentry{list}{description}{#1}% Add entry as description
}
\newenvironment{sortedlist}{%
\DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
\DTLsort{description}{list}% Sort list
\begin{itemize}%
\DTLforeach*{list}{\theDesc=description}{%
\item \theDesc}% Print each item
\end{itemize}%
}
\begin{document}
Sorted:
\begin{sortedlist}
\sortitem{ISDYNSTP:}
\sortitem{ISCDCA:}
\sortitem{\textcolor{magenta}{MVAR}}
\sortitem{IS2TL}
\end{sortedlist}
\end{document}
我希望“MVAR”以特定颜色显示。我还尝试用 \sortitem{color{magenta}MVAR} 替换第三项,但这似乎也不起作用。
任何帮助都将不胜感激,谢谢!
答案1
您可以添加一个可选参数,用于设置颜色或其他风格选项。
\documentclass{article}
\usepackage{xcolor}
\usepackage{datatool}% http://ctan.org/pkg/datatool
\newcommand{\sortitem}[2][\empty]{%
\DTLnewrow{list}% Create a new entry
\DTLnewdbentry{list}{description}{#2}% Add entry as description
\DTLnewdbentry{list}{font}{#1}% Add entry as font
}
\newenvironment{sortedlist}{%
\DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
\DTLsort{description}{list}% Sort list
\begin{itemize}%
\DTLforeach*{list}{\theDesc=description,\myFont=font}{%
\item {\myFont\theDesc}}% Print each item
\end{itemize}%
}
\begin{document}
Sorted:
\begin{sortedlist}
\sortitem{ISDYNSTP:}
\sortitem{ISCDCA:}
\sortitem{PFT}
\sortitem[\protect\color{magenta}]{MVAR}
\sortitem{IS2TL}
\end{sortedlist}
\end{document}