我有下一份文件:
\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}