我正在尝试将某种需求的两级枚举压缩到图形中,并使用文本引用枚举的项目。我使用表格来分隔两列(尝试过\twocolumn
但\onecolumn
没有达到预期效果)并生成图形边框。
下面是我成功完成的一个例子:
图 1.2 基本上就是我想要的,只是对列表中项目的引用不起作用:例如\ref
引用项目 1e 显示为“5”,即只显示嵌套列表,并且使用阿拉伯数字而不是字母显示。
图 1.2 是使用裸列表环境创建的,即像这样:
\begin{figure}
\newcounter{ctr:templatelang-req}
\newcounter{ctr:templatelang-req:sub}[ctr:templatelang-req]
\begin{tabular}{|p{0.48\textwidth}p{0.45\textwidth}|}
\hline
\begin{list}{\arabic{ctr:templatelang-req}.}{\usecounter{ctr:templatelang-req}\leftmargin=1.4em}
\item SDF
\begin{list}{\alph{ctr:templatelang-req:sub}.}{\usecounter{ctr:templatelang-req:sub}\leftmargin=1.4em}
\item \label{templatelang-req:target-sort}Target sort
\item \label{templatelang-req:cons-attr}Constructor attribute
\item \label{templatelang-req:other-attrs}Other attributes
\item \label{templatelang-req:sort-refs}References to other sorts
\item \label{templatelang-req:literals-1}Literal text (excl. layout)
\item \label{templatelang-req:option-op}Option operator \texttt{A?}
\item \label{templatelang-req:repetition-op}Repetition operators \texttt{A*} and \texttt{A+}
\item \label{templatelang-req:list-op}List operators \texttt{\{A S\}*} and \texttt{\{A S\}+}
\end{list}
\end{list} &
\begin{list}{\arabic{ctr:templatelang-req}.}{\usecounter{ctr:templatelang-req}\leftmargin=1.4em}
\setcounter{ctr:templatelang-req}{1}
\item Pretty printer
\begin{list}{\alph{ctr:templatelang-req:sub}.}{\usecounter{ctr:templatelang-req:sub}\leftmargin=1.4em}
\item \label{templatelang-req:literals-2}Literal text (incl. layout)
\item \label{templatelang-req:wordwrap}Optional: word wrap
\item \label{templatelang-req:alignment}Optional: alignment
\item \label{templatelang-req:tabstops}Optional: tab stops
\end{list}\vspace{1ex}
\item Completion templates
\begin{list}{\alph{ctr:templatelang-req:sub}.}{\usecounter{ctr:templatelang-req:sub}\leftmargin=1.4em}
\item \label{templatelang-req:literals-3}Literal text (incl. layout)
\item \label{templatelang-req:placeholder-text}Placeholder text
\end{list}
\end{list} \\
\hline
\end{tabular}
\caption{Required information to encode in our syntax templates}
\label{fig:templatelang:requirements}
\end{figure}
图 1.3 是使用该环境的结果enumerate
。这里唯一的“技巧”是使用\setcounter{enumi}{1}
从第二列的正确数字开始外部枚举。使用图 1.3,\ref
效果很好:它包括两个级别并使用正确的数字类型。即,对项目 1e 的引用显示为 1e。
图1.3的代码:
\begin{figure}
\begin{tabular}{|p{0.48\textwidth}p{0.45\textwidth}|}
\hline
\begin{enumerate}
\item SDF
\begin{enumerate}
\item \label{templatelang-req:target-sort}Target sort
\item \label{templatelang-req:cons-attr}Constructor attribute
\item \label{templatelang-req:other-attrs}Other attributes
\item \label{templatelang-req:sort-refs}References to other sorts
\item \label{templatelang-req:literals-1}Literal text (excl. layout)
\item \label{templatelang-req:option-op}Option operator \texttt{A?}
\item \label{templatelang-req:repetition-op}Repetition operators \texttt{A*} and \texttt{A+}
\item \label{templatelang-req:list-op}List operators \texttt{\{A S\}*} and \texttt{\{A S\}+}
\end{enumerate}
\end{enumerate} &
\begin{enumerate}
\setcounter{enumi}{1}
\item Pretty printer
\begin{enumerate}
\item \label{templatelang-req:literals-2}Literal text (incl. layout)
\item \label{templatelang-req:wordwrap}Optional: word wrap
\item \label{templatelang-req:alignment}Optional: alignment
\item \label{templatelang-req:tabstops}Optional: tab stops
\end{enumerate}\vspace{1ex}
\item Completion templates
\begin{enumerate}
\item \label{templatelang-req:literals-3}Literal text (incl. layout)
\item \label{templatelang-req:placeholder-text}Placeholder text
\end{enumerate}
\end{enumerate} \\
\hline
\end{tabular}
\caption{Required information to encode in our syntax templates}
\label{fig:templatelang:requirements}
\end{figure}
所以我的问题是:使用回忆录类时,如何减少枚举环境中列表项的缩进?
我尝试了建议的事情在 stackoverflow 上,这就是我得出图 1.2 的方法,但由于它被破坏了,\ref
所以对我没有真正的帮助。
我也尝试在各个地方插入\setlength{\leftmargin}{0pt}
,如回忆录手册第 149 页图 8.2(一般列表的布局参数)所建议的那样,但这也没有帮助。
我是否真的需要使用额外的包来减少这些枚举的缩进,正如建议的那样这里?
答案1
默认情况下,memoir 类会在标签前面添加一些水平空间。在下面的代码中(我相信这实现了您的格式化目标),通过明确指定标签的所需形式([1.]
, [a.]
)作为每个命令的参数,可以抑制此额外空间\begin{enumerate}
。此外,我为左侧列分配了更多的水平宽度。该指令\firmlists*
减少了垂直间距量,并且该命令\frenchspacing
抑制了句点后的额外空间。
额外的建议:考虑将表格内容放在table
而不是环境中figure
:人们倾向于将“图形”与图形信息而不是表格信息联系起来。
\documentclass[a4paper]{memoir}
\frenchspacing
\begin{document}
\begin{figure}
\firmlists*
\begin{tabular}{|p{0.51\textwidth}p{0.45\textwidth}|}
\hline
\begin{enumerate}[1.]
\item SDF
\begin{enumerate}[a.]
\item \label{templatelang-req:target-sort}Target sort
\item \label{templatelang-req:cons-attr}Constructor attribute
\item \label{templatelang-req:other-attrs}Other attributes
\item \label{templatelang-req:sort-refs}References to other sorts
\item \label{templatelang-req:literals-1}Literal text (excl. layout)
\item \label{templatelang-req:option-op}Option operator \texttt{A?}
\item \label{templatelang-req:repetition-op}Repetition operators
\texttt{A*} and \texttt{A+}
\item \label{templatelang-req:list-op}List operators
\texttt{\{A S\}*} and \texttt{\{A S\}+}
\end{enumerate}
\end{enumerate} &
\begin{enumerate}
\setcounter{enumi}{1}
\item Pretty printer
\begin{enumerate}[a.]
\item \label{templatelang-req:literals-2}Literal text (incl. layout)
\item \label{templatelang-req:wordwrap}Optional: word wrap
\item \label{templatelang-req:alignment}Optional: alignment
\item \label{templatelang-req:tabstops}Optional: tab stops
\end{enumerate}
\vspace{1.8ex}
\item Completion templates
\begin{enumerate}[a.]
\item \label{templatelang-req:literals-3}Literal text (incl. layout)
\item \label{templatelang-req:placeholder-text}Placeholder text
\end{enumerate}
\end{enumerate} \\
\hline
\end{tabular}
\caption{Required information to encode in our syntax templates}
\label{fig:templatelang:requirements}
\end{figure}
\end{document}
答案2
哦,好吧,该enumitem
包可以工作了,使用如下代码:
\usepackage{enumitem}
\begin{enumerate}[leftmargin=1.4em]
\item ...
\end{enumerate}
但我还是有兴趣听到其他的答案!
(LaTeX 一直让我感到惊讶,有时候这些看似简单的事情却很难发现......)