例子

例子

我正在编写一本手册,使用描述列表列出 GUI 菜单项及其下级参数。当嵌入列表作为上级列表项的描述时,会出现不良效果。嵌入的列表不会出现在下一行。

  1. 我想知道为什么。
  2. 我想知道如何修复它。

我尝试使用\null、、、和之后的上级,\phantom{a}但无济于事。\vphantom{a}\hphantom{a}\item

例子

\documentclass{article}
\usepackage{fontspec}
\usepackage{enumitem}
\usepackage{xparse}


\NewDocumentEnvironment{parameters}{}
    {%
    \small
    \setlist[description]{font=\tt,nosep,labelwidth=20pt,leftmargin=30pt,}
    \begin{description}
    }%
    {%
    \end{description}
    }

\begin{document}
    
\begin{description}%<- Superior
\item [Apple]%<- Superior
   \begin{parameters}%<- Inferior
       \item [Citris] 0%<- Inferior
       \item [ExcludeFromFridge] 1%<- Inferior
       \item [ConsumeCold]%<- Inferior
   \end{parameters}%<- Inferior
\item [Beer]%<- Superior
   \begin{parameters}%<- Inferior
       \item [Citris] 0%<- Inferior
       \item [ExcludeFromFridge] 0%<- Inferior
       \item [ConsumeCold] 1%<- Inferior
   \end{parameters}%<- Inferior
\end{description}%<- Superior

\end{document}

输出

在此处输入图片描述

期望输出

(无虚拟文本) 在此处输入图片描述

答案1

对于这种情况,您不需要xparse,并且 的功能enumitem最适合。我已经parameters使用\newlist(of enumitem) 定义了一个新列表。同样,使用enumitem提供before键,我们可以强制换行。我们必须告诉 TeX 更改垂直模式。

\documentclass{article}
\usepackage{fontspec}
\usepackage{enumitem}

\newlist{parameters}{description}{1}
\setlist[parameters]{before={\mbox{}\leavevmode},font=\ttfamily,nosep,labelwidth=20pt,leftmargin=30pt,}

\begin{document}

\begin{description}%<- Superior
\item [Apple]%<- Superior
   \begin{parameters}%<- Inferior
       \item [Citris] 0%<- Inferior
       \item [ExcludeFromFridge] 1%<- Inferior
       \item [ConsumeCold]%<- Inferior
   \end{parameters}%<- Inferior
\item [Beer]%<- Superior
   \begin{parameters}%<- Inferior
       \item [Citris] 0%<- Inferior
       \item [ExcludeFromFridge] 0%<- Inferior
       \item [ConsumeCold] 1%<- Inferior
   \end{parameters}%<- Inferior
\end{description}%<- Superior

\end{document}

在此处输入图片描述

相关内容