使 {longtable} 中的命名法符合 {geometry} 吗?

使 {longtable} 中的命名法符合 {geometry} 吗?

在撰写论文的过程中,我发现命名法中由 创建的长行longtable总是超出序言中的长度限制geometry。你能建议我如何解决这个问题吗?以下是相关代码。谢谢您的帮助。

\documentclass[12pt,a4paper,twoside]{report}
\usepackage{geometry}\geometry{top=3cm,bottom=3cm,left=3.7cm,right=2.5cm}

\clearpage
\chapter*{Nomenclature}
\addcontentsline{toc}{chapter}{Nomenclature}
\quad\; \textbf{\Large{Roman Letters}} \\
\begin{longtable}{p{50pt}p{400pt}}
$a$ & This is a long explanation of the symbol $a$ \\
\end{longtable}

答案1

您的 MWE 不完整(缺少\usepackage{longtable}环境document)。以下是小修改,可创建完整的文档来演示问题:

\documentclass[12pt,a4paper,twoside]{report}
\usepackage{longtable}
\usepackage[showframe]{geometry}
\geometry{top=3cm,bottom=3cm,left=3.7cm,right=2.5cm}

\begin{document}
\chapter*{Nomenclature}

\begin{longtable}{p{50pt}p{400pt}}
\hline
$a$ & This is a long explanation of the symbol $a$ \\
\end{longtable}
\end{document}

showframe选项是一个有用的调试选项,它显示页面布局,我已添加它\hline来演示表格的整个宽度,从而显示出过满的问题:

文件图像

抄本 ( .log) 文件显示了页面尺寸。相关值为:

* \textwidth=421.10089pt

因此文本总宽度为 421.10089pt。longtable开头为:

\begin{longtable}{p{50pt}p{400pt}}

因此第一列为 50pt,第二列为 400pt,50pt+400pt=450pt,这意味着它已经比文本宽度宽,但列之间还有空间,在本例中是 值的 4 倍\tabcolsep。您可以通过添加来找到这个值

\showthe\tabcolsep

在 之前longtable。这显示了成绩单中的价值:

> 6.0pt.
l.9 \showthe\tabcolsep

因此,表格的总宽度为 4 × 6pt + 450pt = 474pt。由于文本宽度为 421.10089pt,这意味着表格太宽了 52.89911pt,LaTeX 会在转录文件中告知您:

Overfull \hbox (52.89911pt too wide) in alignment at lines 9--12

因此,您必须缩小一列或两列的宽度。例如:

\begin{longtable}{p{50pt}p{347pt}}

或者,您可以使用更自动化的方法,如下所示:

\documentclass[12pt,a4paper,twoside]{report}
\usepackage{geometry}
\geometry{top=3cm,bottom=3cm,left=3.7cm,right=2.5cm}
\usepackage[symbols,record,style=alttreegroup]{glossaries-extra}

\glsxtrsetgrouptitle{roman}{Roman Letters}
\glsxtrsetgrouptitle{greek}{Greek Letters}

\glsxtrnewsymbol
 [group=roman,
  description={This is a long explanation of the symbol $a$}]
 {a}{$a$}
\glsxtrnewsymbol
 [group=roman,
  description={This is a long explanation of the symbol $b$}]
 {b}{$b$}

\glsxtrnewsymbol
 [group=greek,
  description={This is a long explanation of the symbol $\alpha$}]
 {alpha}{$\alpha$}
\glsxtrnewsymbol
 [group=greek,
  description={This is a long explanation of the symbol $\beta$
  with some filler text to make the explanation longer.}]
 {beta}{$\beta$}

% set up the width available for the symbol:
\setglossarypreamble[symbols]{\glssetwidest{MMMMM}}

\begin{document}
\tableofcontents

\printunsrtglossary[type=symbols,title={Nomenclature}]
\end{document}

词汇表图片

相关内容