在每個描述項後取得冒號(不使用清單包)

在每個描述項後取得冒號(不使用清單包)

電流輸出:

描述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}

相關內容