每个描述项后都添加冒号(不使用列表包)

每个描述项后都添加冒号(不使用列表包)

电流输出:

描述 1布拉 1

想要的输出:

描述1:布拉 1


MWE:

电流输出:

\documentclass[oneside,12pt]{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{fontspec}
\begin{document}
\begin{description}
\item[Desc 1] Bla 1
\end{description}
\end{document}

想要的输出:

\documentclass[oneside,12pt]{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{fontspec}
\begin{document}
\begin{description}
\item[Desc 1:] Bla 1
\end{description}
\end{document}

当然我知道我可以通过正则表达式替换来做到这一点...但我很确定有一种更简单,更优雅的方法。而且我正在寻找一种解决方案,用于我有> 100个项目的情况

答案1

重新定义\descriptionlabel添加冒号:

\documentclass[oneside,12pt]{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{fontspec}

\renewcommand*{\descriptionlabel}[1]{\hspace{\labelsep}\descfont #1:}

\begin{document}
\begin{description}
\item[Desc 1] Bla 1
\item[Desc 2] Bla 2
\item[Desc 3] Bla 3
\end{description}
\end{document}

结果:

在此处输入图片描述

对于不使用可选参数的情况,我没有做出任何预测\item,因为这在一开始就没有意义description

答案2

这重新定义了\item,但当没有指定可选参数时将给出默认行为(省略冒号)。

\documentclass[oneside,12pt]{scrartcl}
%\usepackage{polyglossia}
%\setdefaultlanguage{german}
%\usepackage{fontspec}
\let\svitem\item
\renewcommand\item[1][\relax]{\ifx\relax#1\svitem\else\svitem[#1:]\fi}
\begin{document}
\begin{description}
\item[Desc 1] Bla 1
\item Default empty tag
\end{description}
\end{document}

在此处输入图片描述

由于重新定义了\item,上面的 MWE 将影响其他列表类型。但是,可以使用以下 MWE 来避免这种情况,它只会影响环境description

\documentclass[oneside,12pt]{scrartcl}
%\usepackage{polyglossia}
%\setdefaultlanguage{german}
%\usepackage{fontspec}
\let\svitem\item
\newcommand\altitem[1][\relax]{\ifx\relax#1\svitem\else\svitem[#1:]\fi}
\let\svdescription\description
\def\description{\let\item\altitem\svdescription}
\begin{document}
\begin{description}
\item[Desc 1] Bla 1
\item Default empty tag
\end{description}
\begin{itemize}
\item[Desc 1] Bla 1
\item Default empty tag
\end{itemize}
\end{document}

相关内容