具有换行样式的嵌套描述环境的第一个标签不会出现在新行上

具有换行样式的嵌套描述环境的第一个标签不会出现在新行上

我有下一份文件:

\documentclass[12pt]{article}
\usepackage[english, ukrainian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{enumitem}
\setdescription{style=nextline, font=\mdseries, align=left}
\setdescription[2]{style=nextline, font=\mdseries, align=left}

\newcommand{\code}[1]{{\tt #1}}
\begin{document}
    \begin{description}
    \item[\code{int} (value type)]
        \begin{description}
            \item[\code{int = a}]
                Значення не змінюється.
            \item[\code{ref int = a}]
                Значення змінюється.
            \item[\code{int = new int; int = a}]
                Значення не змінюється.
            \item[\code{ref int = new int; int = a}]
                Значення змінюється.
        \end{description}
    \item[\code{struct} (value type)]
        \begin{description}
            \item[\code{struct = a}]
                Значення не змінюється.
            \item[\code{ref struct = a}]
                Значення змінюється.
            \item[\code{struct = new struct; struct = a}]
                Значення не змінюється.
            \item[\code{ref struct = new struct; struct = a}]
                Значення змінюється.
        \end{description}
        Так як \code{struct} це тип-значення то поведінка аналогічна до типу \code{int}.
    \item[\code{int[]} (reference type)]
        \begin{description}
            \item[\code{int[] = a}]
                Значення змінюється.
            \item[\code{ref int[] = a}]
                Значення змінюється.
            \item[\code{int[] = new int[]; int[] = a}]
                Значення змінюється.
            \item[\code{ref int[] = new int[]; int[] = a}]
                Значення змінюється.
        \end{description}
    \item[\code{string} (reference type)]
        \begin{description}
            \item[\code{int[] = a}]
                Значення не змінюється.
            \item[\code{ref int[] = a}]
                Значення змінюється.
            \item[\code{int[] = new int[]; int[] = a}]
                Значення не змінюється.
            \item[\code{ref int[] = new int[]; int[] = a}]
                Значення змінюється.
        \end{description}
\end{description}
\end{document}

它几乎产生了我想要的结果:

在此处输入图片描述

但请注意第一个嵌套描述:\item[\code{int = a}]必须转到新行,但\item[\code{int} (value type)]由于某种原因,它跟在后面。如何让它出现在新行上?我试图在 enumitem 文档中找到有关它的内容,但我找不到。

答案1

改编

  • \setdescription已弃用,替换为\setlist[description,<levels>]{<format>}
  • 定义的命令\directenv,如果没有后续文本,则可以使用该命令,但可以直接使用另一个环境:
    \newcommand{\directenv}{\hfill\vspace{-1.7\baselineskip}}
    
  • 减少示例代码并添加带有文本的项目(用于比较)
  • \tt #1用 latex 命令替换旧的 tex 命令\texttt{#1}(或\ttfamily #1

代码

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{enumitem}
\setlist[description]{style=nextline, font=\mdseries, align=left}

\newcommand{\code}[1]{{\texttt{#1}}}
\newcommand{\directenv}{\hfill\vspace{-1.7\baselineskip}}

\begin{document}
\begin{description}
\item[\code{int} (value type)]\directenv
    \begin{description}
        \item[environment item]
            foo
    \end{description}
\item[\code{struct} (value type)]
    direct text (no environment)
\end{description}
\end{document}

结果

在此处输入图片描述

相关内容