我对下表有一个奇怪的问题:
\begin{table}[h]
\begin{tabular}{c | ccccccc }
\toprule
n & A2 & A3 & d2 & D3 & D4 & B3 & B4 \\
\midrule
2 & 1.880 & 2.659 & 1.128 & 0 & 3.267 & 0 & 3.267 \\
3 & 1.023 & 1.954 & 1.693 & 0 & 2.574 & 0 & 2.568 \\
4 & 0.729 & 1.628 & 2.059 & 0 & 2.282 & 0 & 2.266 \\
5 & 0.577 & 1.427 & 2.326 & 0 & 2.114 & 0 & 2.089 \\
% OTHER LINES UP TO 25
\bottomrule
\end{tabular}
%caption{}
\label{tab:controlchartsparamenter}
\end{table}
最多 10 行(可能更多)一切都很好,但是随着行数的增加,我收到以下错误(与表格无关)和许多警告。
文件:forest.sty (第 168 行)
错误:包词汇表错误:词汇表条目“SPC”尚未定义。
forest.sty 中的 LINE:
\RequirePackage[#1]{forest-lib-#2}%
首字母缩略词 SPC 仅在此处使用:
\section{\acrlong{spc}}
\acrfull{spc} is ...
其在序言中定义为:
\newacronym{spc}{SPC}{Statistical Process Control}
主文件中的警告如下:
警告:PDF 字符串 (PDFDocEncoding) 中不允许使用标记:(hyperref) 删除“\acrlong”
线:
\subsection{\acrfull{pvm}}
警告:复合字母\textasciimacron+X'(hyperref) not defined in PD1 encoding,(hyperref) removing
\textasciimacron'
线:
\subsection{\={X}-R and \={X}-s charts}
然后我收到这个警告森林.猪圈
警告:没有文件 thesis.acr。
以及我的序言文件:
警告:名称{glo:mpc}已被引用但不存在,已由固定名称替换
我在 Linux Mint 上使用 texlive 2017、书籍类以及我定义的许多包序言文件,包括:
\RequirePackage{booktabs}
\RequirePackage{threeparttable}
\RequirePackage{hyperref}
\RequirePackage[toc,acronym]{glossaries}
\RequirePackage[edges]{forest}
在我创建表格之前,一切都运行正常,然后我收到错误,然后如果我删除大部分行(无论删除哪些行),错误就会消失。我真的不明白长表格怎么会产生带有首字母缩略词和森林包的错误。有人知道吗?
谢谢你!
例子
我从包含许多文件的大型文档中创建的唯一示例是以下示例。首字母缩略词在森林中出现错误,与表格的长度和存在无关。无论如何,在添加那个长表格之前,\section{\acrlong{acr}} 在我的文档中运行良好。
\documentclass[11pt,a4paper,twoside,openright,draft]{book}
\usepackage{booktabs}
\usepackage{threeparttable}
\usepackage{hyperref}
\usepackage[toc,acronym]{glossaries}
\usepackage[edges]{forest}
\newacronym{acr}{ACR}{Acronym}
\begin{document}
\section{\acrlong{acr}}
\end{document}
这个最小的例子在 forest.sty 的第 50 行出现了以下错误(在例子中甚至没有使用):
软件包词汇表错误:词汇表条目“ACR”尚未定义。\end{document}
\usetikzlibrary{shapes} % line 50
答案1
我们可以用更短的 MWE 来演示这个问题:
\documentclass{book}
\usepackage[acronym]{glossaries}
\newacronym{acr}{ACR}{Acronym}
\begin{document}
\section{\acrlong{acr}}
\end{document}
这会导致错误:
! Package glossaries Error: Glossary entry `ACR' has not been defined.
以下情况不会发生错误:
\documentclass{book}
\usepackage[acronym]{glossaries}
\newacronym{acr}{ACR}{Acronym}
\begin{document}
\chapter{Sample}
\section{\acrlong{acr}}
\end{document}
一切看起来都很好:
问题不是实际的章节标题,而是页面标题。该类book
默认为headings
页面样式,但\chapter
用于\thispagestyle{plain}
章节的第一页。如果我添加一些虚拟填充文本,错误会再次出现第 3 页:
\documentclass{book}
\usepackage{lipsum}% dummy text
\usepackage[acronym]{glossaries}
\newacronym{acr}{ACR}{Acronym}
\begin{document}
\chapter{Sample}
\section{\acrlong{acr}}
\lipsum[1-15]% dummy text
\end{document}
在第 1 页上,页眉为空(因为plain
页面样式有效)。在第 2 页上,页眉包含章节标题。在第 3 页上,页眉包含节标题,在本例中为,\acrlong{acr}
但页面样式将其封装为\MakeUppercase
,这会将标签转换acr
为大写,因此现在您有,\acrlong{ACR}
但没有使用标签定义的条目ACR
,这就是导致错误的原因。
我怀疑发生的情况是,您的表格在第 2 页,但是当您添加额外的行时,页面上没有足够的空间,因此它被移动到第 3 页,此时发生错误,因为\acrlong{acr}
现在在页眉中。
最简单的解决方法是使用\glsentrylong
而不是\acrlong
:
\documentclass{book}
\usepackage{lipsum}% dummy text
\usepackage[acronym]{glossaries}
\newacronym{acr}{ACR}{Acronym}
\begin{document}
\chapter{Sample}
\section{\glsentrylong{acr}}
\lipsum[1-15]
\end{document}
扩展包中还有其他可用的选项glossaries-extra
,详见章节标题、页眉、标题和内容中的条目。 例如:
\documentclass{book}
\usepackage{lipsum}% dummy text
\usepackage[acronym]{glossaries-extra}
\glssetcategoryattribute{acronym}{headuc}{true}
\setabbreviationstyle[acronym]{long-short}
\newacronym{acr}{ACR}{Acronym}
\begin{document}
\chapter{Sample}
\section{\glsfmtlong{acr}}
\lipsum[1-15]
\end{document}