自定义解说列表的嵌套问题

发布于 2021-04-12 21:55:34

几天前,我曾经在https://ask.latexstudio.net/ask/question/3293.html提问,有位大佬给出了一个解决方案,我发现该方案不适合嵌套使用,嵌套使用会导致第一层标签不顶格。
a5c1d2feab04ae7f819ea2de8278a935.png

\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}

查看更多

关注者
0
被浏览
1.1k
1 个回答
zlter.w
zlter.w 2021-04-12
这家伙很懒,什么也没写!

嵌套的做法就更复杂了,这类环境有嵌套的需求吗?这需要代码继续进行增加判断了。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览