几天前,我曾经在https://ask.latexstudio.net/ask/question/3293.html提问,有位大佬给出了一个解决方案,我发现该方案不适合嵌套使用,嵌套使用会导致第一层标签不顶格。
\documentclass{ctexart}
\usepackage[showframe]{geometry}
\usepackage{calc}
\makeatletter
\newcommand{\DESCRIPTION@original@item}{}
\let\DESCRIPTION@original@item\item
\newcommand*{\DESCRIPTION@envir}{DESCRIPTION}
\newlength{\DESCRIPTION@totalleftmargin}
\newlength{\DESCRIPTION@linewidth}
\newcommand{\DESCRIPTION@makelabel}[1]{\llap{#1}}%
\newcommand{\DESCRIPTION@item}[1][]{%
\setlength{\@totalleftmargin}%
{\DESCRIPTION@totalleftmargin+\widthof{\textbf{#1 }}-\leftmargin}%
\setlength{\linewidth}
{\DESCRIPTION@linewidth-\widthof{\textbf{#1 }}+\leftmargin}%
\par\parshape \@ne \@totalleftmargin \linewidth
\DESCRIPTION@original@item[\textbf{#1}]%
}
\newenvironment{DESCRIPTION}
{\list{}{\setlength{\labelwidth}{0cm}%
\let\makelabel\DESCRIPTION@makelabel}%
\setlength{\DESCRIPTION@totalleftmargin}{\@totalleftmargin}%
\setlength{\DESCRIPTION@linewidth}{\linewidth}%
\renewcommand{\item}{\ifx\@currenvir\DESCRIPTION@envir
\expandafter\DESCRIPTION@item
\else
\expandafter\DESCRIPTION@original@item
\fi}}
{\endlist}
\makeatother
\begin{document}
\begin{DESCRIPTION}
\item[这是标签] 这是列表项目这是列表项目这是列表项目这是列表项目这是列表项目
这是列表项目这是列表项目这是列表项目这是列表项目这是列表项目
\item[这是非常长的标签] 这是列表项目这是列表项目这是列表项目这是列表项目这是列表项目
这是列表项目这是列表项目这是列表项列表项目这是列表项目这是列表项目
这是列表项目这是列表项目这是列表
\item[注意事项:]
\begin{DESCRIPTION}
\item[嵌套标签]出现问题,第一层标签没有顶格
\item[嵌套长标签] 目这是列表项列表项目这是列表项目这是列表项目
这是列表项目这是列表项目这是列
\end{DESCRIPTION}
\item[注意事项:]
\begin{DESCRIPTION}
\item[嵌套]出现问题,第一层标签没有顶格
\item[嵌套长标签] 目这是列表项列表项目这是列表项目这是列表项目
这是列表项目这是列表项目这是列
\end{DESCRIPTION}
\end{DESCRIPTION}
\end{document}