LaTex 嵌套描述列表 - 项目标签放置错误 - 是否需要在 \end{description} 后面加上空行、\par、\mbox{} 或 \item[]?

LaTex 嵌套描述列表 - 项目标签放置错误 - 是否需要在 \end{description} 后面加上空行、\par、\mbox{} 或 \item[]?

嵌套的描述列表后面是否需要\end{description}空行? \par或者\mbox{}\item[]LaTex 嵌套描述列表中?我查看过的所有文档或示例均未表明这一点,但我遇到了布局错误。

使用 LaTex 时,我的嵌套描述列表会导致内部描述列表末尾的项目标签放置错误,通常会在下一个项目的标签上重叠打印。我可以通过以下方式解决这个问题:在现有标签后面插入\end{description}一个新插入的尾随空行、、\par\mbox{}\item[]添加空行或\par可产生最佳效果。根据下面 David 的回答,我知道删除不必要的\par命令也可以解决错误。这个空行或\par解决方案对我有用,似乎合乎逻辑,也不会破坏任何非嵌套列表,但为什么需要进行任何更改?是我遗漏了什么还是有错误?

以下是一些错误示例:

商品标签位置错误 商品标签位置错误且打印过度

以下是修复错误的相应差异 - 简单地在\par后面插入一个尾随的\end{description}

@@ -865,5 +865,5 @@
  a text which ... grammar  \par
-\end{description}
+\end{description}\par
 \item[{(J002)}]\par
  Acronyms and abbreviations  \par
@@ -980,5 +980,5 @@
  a computer ...

-\end{description}
+\end{description}\par
 \item[{(J004)}]\par
  Trademarks are ...  \par

这是一个 tiny.tex 文件,它表现出相同的布局错误(我试图保留空白行并\par放置在原始 tex 文件中):

\documentclass[12pt,twoside]{book}\makeatletter

  \makeatother
\begin{document}

\chapter[{    DETAILED DESCRIPTION ...  }]{    DETAILED DESCRIPTION ...  }\par
 \begin{description}

\item[{(J001)}]\par
 Definitions  \par
  \begin{description}

\item[{(post-verification ...)}]\par
 a text ...  \par

\end{description}
\item[{(J002)}]\par
 Acronyms and abbreviations  \par
  \begin{description}

\item[{(ECMA)}]\par
 European ...  \par

\item[{(YACC)}]\par
 Yet Another Compiler Compiler  \par

\end{description}
\item[{(J003)}]\par
 Glossary  \par
  \begin{description}

\item[{(2-tuple)}]\par
 a tuple with two ordered elements, an ordered pair  \par


\item[{(yacc)}]\par
 a computer utility program which will

\end{description}
\item[{(J004)}]\par
 Trademarks are identified ...  \par

\item[{(J005)}]\par
The following terms are ...:  \par
  \begin{description}

\item[{(+)}]\par
 (+)

\end{description}

\end{description}    CLA ...  \par

\end{document}

下面是从 pdflatex 输出中剪切出来的 PDF 片段,显示与上面相同的错误:

pdflatex 输出

如果我插入\traceparagraphs1命令并在命令后插入一个空白行\end{description}并比较日志输出,我会看到以下差异,我不明白,但可以解释为什么需要空白行来产生正确的格式。首先我们添加一个空白行:

--- tiny5.tex   2020-12-18 19:37:23.966114635 +0000
+++ tiny6.tex   2020-12-18 19:37:38.690148323 +0000
@@ -17,4 +17,5 @@

 \end{description}
+
 \item[{(J002)}]\par
  Acronyms and abbreviations  \par

我们将 diff 实用程序应用于 tex 日志文件:

--- tiny5.log   2020-12-18 19:37:58.370193342 +0000
+++ tiny6.log   2020-12-18 19:38:02.762203391 +0000
@@ -1,8 +1,8 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex 2020.12.13)  18 DEC 2020 19:37
+This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex 2020.12.13)  18 DEC 2020 19:38
@@ other diffs omitted here as mostly tiny5 to tiny6 filename changes @@
@@ -113,9 +113,4 @@

 @firstpass
-[]
-@\par via @@0 b=0 p=-10000 d=100
-@@1: line 1.2- t=100 -> @@0
-
-@firstpass
 []\OT1/cmr/m/n/12 The following terms are ...:
 @\par via @@0 b=0 p=-10000 d=100

任何线索都值得赞赏。

答案1

目前尚不清楚为什么\par我开始删除它们,然后我想得到了你想要的输出。

在此处输入图片描述

\documentclass[12pt,twoside]{book}\makeatletter

  \makeatother
\begin{document}

\chapter[{    DETAILED DESCRIPTION ...  }]{    DETAILED DESCRIPTION ...  }
 \begin{description}

\item[{(J001)}]
 Definitions  
  \begin{description}

\item[{(post-verification ...)}]
 a text ...  

\end{description}
\item[{(J002)}]
 Acronyms and abbreviations  
  \begin{description}

\item[{(ECMA)}]
 European ...  

\item[{(YACC)}]
 Yet Another Compiler Compiler  

\end{description}
\item[{(J003)}]
 Glossary  
  \begin{description}

\item[{(2-tuple)}]
 a tuple with two ordered elements, an ordered pair  


\item[{(yacc)}]
 a computer utility program which will

\end{description}
\item[{(J004)}]
 Trademarks are identified ...  

\item[{(J005)}]
The following terms are ...:  
  \begin{description}

\item[{(+)}]
 (+)

\end{description}

\end{description}    CLA ...  

\end{document}

相关内容