我正在工作statsoc.cls
(你可以找到它这里)。这里我向你展示了我在论文中遇到的问题的工作文件。
我有一张表格,上面有一个较长的标题(2-3 行)。每次我编译.tex
文件时,表格都会向页面右侧移动一点。我认为这是因为标题在某个时候停止换行。
\documentclass{statsoc}
%%%% Packages to be used
\usepackage[a4paper]{geometry}
\usepackage{amssymb, amsmath}
\usepackage{graphicx}
\usepackage[caption = false]{subfig}
\usepackage{enumerate}
\usepackage{comment}
\usepackage{natbib, float}
\title{``Table keeps moving every time I compile''}
\begin{document}
\maketitle
\begin{table}
\caption{Table moves a little everytime I compile. I think this is because I have a long caption, but I cannot figure out how to resolve this problem. As you can see I am using statsoc.cls. I can reset the table if I delete the .aux file and recompile}
\fbox{%
\begin{tabular}{c c c c c c c c c c c c c c c c c c}
\hline
1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5 & 1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5\\
1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5 & 1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5\\
1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5& 1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5\\
\hline
\end{tabular}}
\end{table}
\end{document}
当我删除 .aux 文件并重新编译时,它以如下方式启动:
然后经过一次编译后变成
然后经过许多
当我重新编译时,我没有在表环境内做任何更改,而是在表环境之外工作。我相信这问题和我的完全一样,但是问题被关闭了。
我不确定您是否需要更多信息。如果需要,请告诉我。
有一位 overleaf 用户写道这里
请注意,如果您的文档包含其他 LaTeX 错误,表格将无法正确处理。因此,如果您收到有关等的错误消息
Missing number
,\statsocwidth@b
请先注释掉表格并更正代码中的其他错误。然后取消注释表格代码,并点击错误/警告消息窗口底部的“从头开始重新编译”。
因此显然,每次出现错误时,表格就会变得混乱,您需要删除辅助文件。
答案1
这是一个非常隐蔽的错误,因为在某个我无法找到的地方插入了一个虚假的空格。由于这个虚假的空格,每次编译文档时,分配给标题的宽度都会增加 3.65pt,这正好是所选字体中正常单词间空格的宽度。
这是一个解决方法。
\documentclass{statsoc}
%%%% Packages to be used
\usepackage[a4paper]{geometry}
\usepackage{amssymb, amsmath}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makecaption}
{\parbox}
{\advance\@tempdima-\fontdimen2\font\parbox} % decrease the width!
{}{}
\makeatother
\usepackage{graphicx}
\usepackage[caption = false]{subfig}
\usepackage{enumerate}
\usepackage{comment}
\usepackage{natbib, float}
\title{``Table keeps moving every time I compile''}
\author{Don't move!}
\begin{document}
\maketitle
\begin{table}
\caption{Table moves a little everytime I compile.
I think this is because I have a long caption,
but I cannot figure out how to resolve this problem.
As you can see I am using statsoc.cls. I can reset
the table if I delete the .aux file and recompile}
\fbox{%
\begin{tabular}{c c c c c c c c c c c c c c c c c c}
\hline
1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5 & 1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5\\
1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5 & 1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5\\
1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5& 1 & 2 & 3 & 4 & 5 & 2 & 3 & 4 & 5\\
\hline
\end{tabular}}
\end{table}
\end{document}