LaTeX脚注设置全解析:编号、版式与场景实战

发布时间:2026/11/2 20:39:22

LaTeX脚注设置全解析:编号、版式与场景实战 1. 脚注失控往往不是因为不会用 \footnoteLaTeX 脚注设置这件事表面上看只有一条命令写起来就是\footnote{说明文字}但真正让排版工作返工的几乎从来不是不知道怎么加脚注而是加了之后不听话编号莫名其妙从 1 重新开始、脚注线粗得像一道横杠、表格里的脚注凭空消失、章节标题里塞一个脚注直接编译报错、脚注多了之后整页底部挤成一团甚至跨页时脚注被切到下一页一半。这些问题我在帮别人改投稿模板、排版内部资料、处理会议论文格式时反复遇到过几乎每一类都对应着 LaTeX 内核里一个具体的参数或机制。所以这篇文章不谈脚注怎么写这种入门问题而是把LaTeX 脚注设置拆成三层编号层谁是 1、谁是 2、什么时候归零、版式层脚注区长什么样、离正文多远、脚注之间多密、场景层表格、标题、浮动体、多栏、中文排版这些容易翻车的地方。每一层我都会说清楚为什么默认是这样的因为你不搞明白默认值从哪来改的时候就只能靠试试十次错八次。读者对象也很明确写过一阵子 LaTeX、能独立编译一份文档、但一遇到脚注排版细节就卡住的人。如果你正在给某个期刊模板做最后调整或者在做一份注释量很大的内部讲义又或者需要在一页里塞二三十条脚注还要保持可读性这里的内容基本能覆盖你 90% 的需求。我会给出可以直接抄的参数和代码也会给出踩过的坑——哪些写法看起来没问题、编译也不报错但输出结果是错的。需要提前说一句脚注的默认行为在不同文档类里差别不小article、book、report的默认值各不相同KOMA-Script 系列scrartcl等和memoir又有自己的一套接口。下面凡是涉及具体数值的默认以article10pt 为基准遇到别的文档类我会点明差异。2. 先看清结构一条脚注在底层被拆成了三块2.1 标记、正文、分隔线各自独立很多人以为\footnote是一个整体实际上它在 LaTeX 内核里至少拆成了三个可以单独控制的部分理解这个拆分是后面所有定制的前提。第一部分是标记也就是正文里那个上标数字。它由\footnotemark生成内部做的事情是把footnote计数器加一然后用\thefootnote取出当前编号再用\textsuperscript把它排成上标。注意这里的顺序很关键——编号是在标记阶段就确定下来的而不是在排版脚注正文时确定。这解释了一个非常常见的困惑为什么你在段落里写了脚注最后脚注却跑到了下一行甚至下一页的底部编号却还是原来那个。因为编号早就固定了正文只是延后插入。第二部分是正文由\footnotetext生成。它做两件事一是把内容排版成一个\footnotesize的小段落二是把这个段落追加到当前页的\footins插入列表中。\footins是 LaTeX 为脚注专门预留的一个浮动插入通道和图表用的\float不是一套东西但它同样会参与分页计算。第三部分是分隔线由\footnoterule控制。这条线不是画在每个脚注上而是画在整个脚注区的顶部只画一次。它的默认定义里带着几个\kern用来精确控制上下留白后面我会专门讲怎么改。把这三块分开之后你会发现所谓脚注设置其实是三套参数并行编号归计数器管正文归\footins和字体管分隔线归\footnoterule管。它们互不干扰改错地方就会出现改了没效果的情况。2.2 为什么脚注会自己跑到页面底部这个问题值得单独说因为它关系到后面所有版式调整的直觉。LaTeX 是先把当前页的正文排出来在排版过程中不断把脚注内容登记到\footins里等到这一页的正文排完、准备分页的时候再统一从页面底部往上倒推把这一页累积的脚注内容塞进去。所以脚注天然是页面底部对齐的你无法让某一条脚注紧跟在它被引用的那一行下面——那不是 LaTeX 的工作方式那需要边注margin note来实现。理解了这一点你就会明白几件事第一脚注太多会挤压正文区域因为\footins占据的高度是从正文可用高度里扣掉的第二如果脚注塞不下LaTeX 会把一部分脚注推到下一页这时候如果设置了\flushbottom正文行距会被拉伸得很别扭第三footmisc宏包的bottom选项之所以存在就是因为默认情况下脚注区是紧贴着正文最后一行往上排的当一页正文没写满时脚注区也跟着往上飘视觉上很难看。注意脚注区和正文之间不是简单的上下两块而是共享同一个页面盒子。任何对脚注区的尺寸改动都会反过来影响这一页能排多少正文。2.3 一组能直接用的最小改动在深入细节之前先给一组我自己长期在用的基础设置覆盖了 80% 的日常需求。这段放在导言区之后所有章节的调整都是在这基础上的增补。% 脚注编号整篇连续阿拉伯数字 \renewcommand{\thefootnote}{\arabic{footnote}} % 脚注字号比默认略小一点中文环境更协调 \renewcommand{\footnotesize}{\small} % 分隔线短一些、细一些长度取栏宽的 35% \renewcommand{\footnoterule}{% \kern-3pt \hrule width 0.35\columnwidth height 0.4pt \kern 2.6pt } % 脚注之间的垂直间距 \setlength{\footnotesep}{0.6\baselineskip} % 脚注区与正文的间距 \setlength{\skip\footins}{1.2\baselineskip plus 4pt minus 2pt}这里有两处需要解释。\footnoterule里那两个\kern不是随便写的默认定义的\kern-3pt是为了抵消前方基线间距的一部分\kern 2.6pt则是给线下方留出空间。如果你把线的粗细从 0.4pt 改到 1pt这两个 kern 的值要跟着微调否则线的上下留白会明显不对称。我一般是保持 -3pt 不动把下面的 kern 改成线粗 2.2pt左右。\skip\footins用plus和minus是为了让它具备弹性。固定值在某些页面上会导致脚注区和正文之间出现一条突兀的空白加了弹性之后LaTeX 分页时会自动在允许范围内伸缩视觉上平滑很多。这个技巧在内核的参数里非常普遍只是很少有人注意到脚注也支持。3. 编号方案从整篇连续到每页归零3.1 重置时机的三种典型选择脚注编号要不要重置取决于文档性质和目标读者的阅读习惯。我见过的需求大致分三类各有各的道理。整篇连续编号是最常见的学术论文、技术报告基本都用这个。好处是读者在正文里看到见脚注 27时能立刻定位交叉引用不会歧义。实现上不需要做任何事因为这是默认行为只要确保没有别的地方偷偷重置过计数器。每页重新编号在报纸、期刊、内部简报里很常见尤其是那种一页一个版块、读者不会跨页回看的场景。实现方式是加载footmisc宏包并加perpage选项\usepackage[perpage]{footmisc}这里有个细节值得说perpage的重置时机是每一页的脚注输出完毕后而不是每一页开始时因为 LaTeX 在排版阶段还不知道哪里会分页。所以它是在输出例程里挂钩子的如果你同时还用了\setcounter{footnote}{0}手动重置两者会打架出现同一页里编号跳号的情况。每章重新编号在书籍和长篇讲义里用得最多。实现方式有两种我推荐用chngcntr提供的接口语义最清晰\usepackage{chngcntr} \counterwithin*{footnote}{chapter} % 如果想让编号带上章号比如 3.5去掉星号 % \counterwithin{footnote}{chapter}带星号和不带星号的区别在于要不要改变\thefootnote的展开形式。带星号只重置计数器编号仍是1, 2, 3不带星号会把编号变成3.1, 3.2这种形式视觉上更明确但占位更宽脚注标记挤在一起时容易显得乱。我在书籍排版里一般用带星号的版本因为这个信息读者靠上下文就能判断没必要在标记里重复。3.2 编号样式的替换清单\thefootnote是可以完全自定义的它就是一个宏返回什么就显示什么。下面这张表列了我实际用过的几种形式以及各自的坑。需求写法实际效果与问题阿拉伯数字\arabic{footnote}默认超过 99 之后上标会明显变宽带圈数字\textcircled{\small\arabic{footnote}}超过 9 之后圆圈变形超过 20 基本不可用小写字母\alph{footnote}超过 26 个会变成奇怪符号务必确认上限罗马数字\roman{footnote}viii 这种长编号上标后非常占地方中文字符\chinese{footnote}需要ctex或zhnumber提供特殊符号\fnsymbol{footnote}只有 9 个符号第 10 个会报错带圈数字这一项我特别想多说两句。\textcircled的实现是用一个固定大小的圆圈去套字符字符宽度一变圆圈就会偏心。如果你确实需要带圈编号稳妥做法是用pifont宏包的现成符号\usepackage{pifont} \renewcommand{\thefootnote}{\ding{\numexpr171\value{footnote}\relax}}\ding{172}到\ding{181}正好是 1 到 10 的带圈数字\numexpr把计数器值映射过去。缺点是硬上限为 10一旦脚注数量超了就会出现乱码字符所以用这个方案时一定要先确认全文脚注总数。\fnsymbol的符号集是* † ‡ § ¶ ‖ ** †† ‡‡它的一个正确用法是配合作者单位说明——论文首页的作者署名后面标星号、剑号然后在页脚解释。这种场景下脚注通常只有两三条符号编号比数字更符合学术惯例也不会和正文里的引用数字混淆。3.3 同一条脚注引用两次怎么办这是实际写作中高频出现的需求同一个注释在两个地方都要提到但不想让脚注区出现两条重复内容。标准解法是\footnotemark和\footnotetext拆开用。第一次正常写\footnote{内容}第二次只写标记、复用编号正文第一次出现\footnote{这是一条被反复引用的长注释。} ... 正文第二次出现\footnotemark[\value{footnote}]\footnotemark带可选参数时不会递增计数器只按指定编号生成上标。但如果两次引用之间还夹了别的脚注\value{footnote}就不是原来那个值了这种写法会直接失效。所以更稳的做法是给脚注加标签正文第一次\footnote{重复使用的注释。\label{fn:repeat}} ... 正文第二次\footref{fn:repeat}\footref是hyperref提供的命令它会读取标签对应的编号并生成上标同时保持超链接可跳转。这个方案的好处是位置无关、无需关心中间插了几条脚注代价是必须加载hyperref。如果你因为某些原因不能用hyperref那就只能在本地手动记录编号老老实实写\footnotemark[3]但要接受改一处、查全篇的维护成本。提示\footref生成的标记和原脚注的标记在 PDF 里会指向同一个锚点做电子版文档时这个特性很有价值如果是纯打印稿用哪种方式都无所谓。4. 版式微调间距、字号与分隔线4.1 脚注区离正文多远才算合适\skip\footins控制的是正文最后一行基线到脚注区顶部含分隔线之间的垂直距离。默认值在article10pt 下大约是\bigskipamount量级中文文档里往往显得偏大因为中文字符的视觉密度比西文高留白过多会让页面显得松散。调整这个参数时我遵循两条经验。一是不要低于0.8\baselineskip否则分隔线会贴到正文最后一行上印刷出来像下划线二是尽量加弹性纯固定值在长短页混排时容易出现这页挤、下页松的跳动感。我常用的写法是\setlength{\skip\footins}{10pt plus 3pt minus 2pt}这个值需要根据正文字号等比缩放。10pt 正文配 10pt12pt 正文大概配 12pt 到 13pt。有个简单办法是直接写成1\baselineskip plus 3pt minus 2pt这样换字号时不用再改。还有一点容易被忽略如果你用了footmisc的bottom选项脚注区会被强制推到页面底部此时\skip\footins只影响脚注区顶部和正文之间的最小间距实际间距会由剩余空间决定。这两个设置是叠加关系不是替代关系很多人调了bottom之后发现间距设置失效了其实是被剩余空间吃掉了。4.2 脚注之间的间距为什么总是不听话\footnotesep这个名字很有迷惑性它听起来像是脚注和分隔线之间的间距实际上它是相邻两条脚注之间的垂直距离准确说是上一条脚注最后一行的深度下沿到下一条脚注第一行基线的距离。默认值约等于1.2\baselineskip在脚注内容通常只有一两行的情况下这个值让每条脚注看起来是一坨独立的小块观感还不错。但当你在一页里塞了七八条脚注或者某条脚注有好几行时问题就来了\footnotesep是固定值不随脚注行数变化于是会出现两条单行脚注之间空隙很大一条三行脚注后面反而显得挤的错觉。这不是错觉是视觉重心的问题——多行脚注的块状感更强需要更大的间隔才能区分。我的处理办法是把它设成比默认略小的值然后靠\\换行和段间距来区分内容层次\setlength{\footnotesep}{0.5\baselineskip}这个值不要低于0.4\baselineskip再小的话两条紧邻的脚注会粘连成一段读者分不清哪行属于哪条。另外要提醒一句\footnotesep只在脚注之间有内容时生效单条脚注不会用到它所以调这个参数必须拿一页有多条脚注的样张来验证只测一条是看不出效果的。4.3 分隔线最短的一行代码最容易改坏的地方\footnoterule的默认定义在不同文档类里差别很大article是 0.4pt 粗、0.4\columnwidth长book里可能会更短。改这个参数时最容易犯的错是只改宽度不改 kern结果线在垂直方向上偏了位置。一段可靠的模板是这样的\renewcommand{\footnoterule}{% \kern-3pt \hrule width 0.4\columnwidth height 0.5pt depth 0pt \kern 2.7pt }注意\hrule的三个参数width是长度height是线上方的厚度depth是线下方的厚度。默认情况下\hrule的 depth 是 0所以线体全部长在上方如果你把 depth 也设成 0.25pt、height 设成 0.25pt线就会以基线为中心分布视觉粗细一样但位置下移。做精细排版时这一点很重要尤其是线宽超过 0.8pt 之后全部偏上会明显难看。想让线更轻还有一个办法不用实线改成一段很短的、居中的细线。这在某些书籍版式里很受欢迎\renewcommand{\footnoterule}{% \kern-3pt \hbox to \columnwidth{\hfil\hrule width 4em height 0.3pt\hfil} \kern 2.6pt }\hbox to \columnwidth配合两个\hfil把短线段居中。长度用em而不是相对栏宽这样栏宽变化时线段长度保持稳定不会在窄栏里缩成一团。4.4 字号、缩进与悬挂对齐脚注正文字号由\footnotesize决定。中文字符在\footnotesize下往往会变得偏小尤其是宋体笔画密集的字打印出来容易糊。我在中文文档里通常把\footnotesize重定义为\small牺牲一点空间换可读性\renewcommand{\footnotesize}{\small}代价是脚注区变高一页能塞的脚注数量减少约 15%。如果你的文档脚注特别多这个交换未必划算可以改用0.95\small这种中间值需要\fontsize手动指定。悬挂对齐是另一个观感差异很大的设置。默认情况下脚注的第二行会从左边距开始和第一行的编号对齐导致编号和内容混在一起。footmisc提供几个选项来解决\usepackage[hang,flushmargin]{footmisc}hang让第二行及以后与第一行的正文起始位置对齐编号单独占一列flushmargin取消脚注段落的首行缩进让编号顶到左边距。两个选项组合起来就是编号顶格、内容悬挂这是绝大多数专业出版物的做法。要注意hang选项在某些文档类里会触发一行警告关于\makefntext重定义一般无害但如果你的模板严格禁止警告可以先检查冲突。还有一个marginal选项把编号排到左侧页边距里正文占满整栏宽度。这个样式在法学和人文类书籍里挺常见但要求左边的页边距足够宽否则编号会被裁掉。用之前先确认\oddsidemargin留出的空间够不够。5. 场景实战表格、标题、浮动体与多栏5.1 表格里的脚注为什么总是消失这是被问得最多的一个问题原因也很明确tabular环境内部会把内容装进一个个盒子\hbox/\vbox而脚注的登记机制依赖当前页面的\footins通道。表格单元格是一个局部的排版组脚注在这里被登记之后如果没有跟随表格一起输出到页面上就会被丢弃——编译不报错脚注就是不出现。最直接的解法是把标记和正文拆开标记留在表格里正文放到表格外面\begin{tabular}{lcc} \hline 项目 数值 备注 \\ \hline 样本 A 12.5 见注\footnotemark[1] \\ 样本 B 13.1 见注\footnotemark[2] \\ \hline \end{tabular} \footnotetext[1]{数值为三次测量的均值。} \footnotetext[2]{测量条件与样本 A 相同。}这里必须用显式编号不能让\footnotemark自己递增因为\footnotetext在表格外面执行时计数器的当前值可能已经被别的脚注改掉了。显式编号虽然啰嗦但可控这是我推荐的稳妥方案。如果表格脚注较多手写编号容易出错可以用threeparttable宏包它专门处理这类场景\usepackage{threeparttable} \begin{table}[htbp] \centering \begin{threeparttable} \begin{tabular}{lcc} \toprule 项目 数值 备注 \\ \midrule 样本 A 12.5 均值\tnote{a} \\ 样本 B 13.1 同条件\tnote{b} \\ \bottomrule \end{tabular} \begin{tablenotes}[flushleft] \footnotesize \item[a] 三次测量的算术平均。 \item[b] 测量条件与样本 A 保持一致。 \end{tablenotes} \end{threeparttable} \caption{带表注的测量结果} \end{table}\tnote和\item是threeparttable自己的一套标记体系和脚注计数器完全独立所以不会出现编号冲突。它的表注排在表格下方、标题上方位置由环境自动管理比手工\footnotetext整洁得多。要注意tablenotes里的\item标签默认是上标形式的如果你不想要上标在\item后加个\textsuperscript的反向处理即可。注意longtable跨页表格里用\footnote同样会丢内容而且因为跨页本页底部这个概念根本不成立。这类表格的注释我一般统一放到表格结束后用普通段落列出或者用threeparttablex的\note机制。5.2 标题里的脚注为什么要加 \protect在\section{}、\caption{}里直接写\footnote轻则脚注位置错乱重则直接报Argument of \caption has an extra }。根本原因是这些命令的参数会被写入.toc、.lof等辅助文件而\footnote是脆弱命令fragile command在展开写文件的过程中会崩溃。标准写法是\section{研究方法\protect\footnote{本节方法参考了通用实验规范。}}\protect阻止\footnote在写辅助文件时被展开等真正排版标题时再执行。这样脚注标记会出现在标题上脚注内容出现在该页底部目录里则不会带上脚注因为.toc里保存的是保护后的形式展开时\footnote会被忽略。如果你希望脚注完全不出现在标题里而是出现在标题下方的正文中那就改用\footnotemark\footnotetext\section{研究方法\footnotemark} \footnotetext{本节方法参考了通用实验规范。}这个组合的好处是脚注正文的位置完全由你控制可以放在标题后面紧接着的段落里避免脚注区离标题太远造成的阅读断点。图表标题里的情况类似但多一层坑\caption在浮动体里浮动体可能被排到别的页面脚注就会跟着飘走。我的一般原则是图表标题里不放脚注需要说明的内容直接写进图注正文或者用threeparttable的表注这样位置稳定、编号也不会受浮动体移动影响。5.3 多栏和 minipage 里的编号局部化minipage环境里的脚注行为经常让人意外编号会从 1 重新开始脚注内容排在这个盒子自己的底部而不是页面底部。这不是 bug是设计——minipage内部建立了新的页面组脚注计数器在其中是局部的。利用这个特性可以做一件有用的事某个局部区域想用独立的脚注编号就用\parbox或minipage包起来编号互不干扰。反过来如果你不希望编号重置就要在环境内部手动恢复计数器\begin{minipage}{0.8\textwidth} \setcounter{footnote}{\value{footnote}} % 无效的写法见下方说明 ... \end{minipage}实际上这样写是无效的因为minipage结束时计数器的改动会被丢弃。正确做法是在minipage结束后把外部计数器调整到正确值\newcounter{savedfootnote} \begin{minipage}{0.8\textwidth} \setcounter{savedfootnote}{\value{footnote}} ... 内容 ... \setcounter{footnote}{\value{savedfootnote}} \end{minipage}真要做这种精细控制不如换个思路把内容改成普通段落用\begin{adjustwidth}控制缩进避免引入新的排版组。minipage的脚注局部化是有意为之的设计逆着它改成本很高。双栏文档的脚注是另一个话题。默认情况下双栏文档的脚注会横跨整页宽度排在页底这通常是你想要的。如果希望脚注只占所在栏的宽度需要dblfnote宏包或者footmisc的para选项配合multicol。multicol环境里的脚注行为更特殊标准multicols不支持脚注内容会被丢弃较新版本的multicol加\footnote需要放在\begin{multicols}之前登记或者干脆改用\marginnote做边注。5.4 边注与尾注脚注之外的两种选择有些内容其实不适合做脚注。比如一条注释长达五六行、包含公式或列表塞在页底会破坏整页的视觉平衡又比如注释是对某个术语的解释性说明读者可能读完正文才回头看放在页底反而干扰视线。这类情况我一般改用边注\usepackage{marginnote} 正文内容\marginnote{\footnotesize 这里是边注内容可以换行。}边注排在页面外侧的页边距里不占用正文区域的高度适合短小的旁注。它的问题是对页边距宽度有要求\marginparwidth至少要 2.5cm 以上才能放下十几个字中文边注还需要处理断行和避头尾一般要配合\raggedright。如果注释篇幅长、数量多、又不需要和正文同页对照尾注是更好的选择。传统方案是endnotes宏包\usepackage{endnotes} 正文内容\endnote{这条注释会集中排到文末。} ... \clearpage \theendnotesendnotes的机制是把注释内容收集起来在\theendnotes处统一输出编号默认独立于脚注计数器。它的问题是和hyperref的配合历史上有不少坑超链接容易失效或指错位置。较新的enotez宏包接口更现代支持分组、排序、自定义样式如果文档允许引入新宏包我更推荐后者。选择哪种形式我的判断标准很简单读者需要在读这一句的时候就看到这条注释吗需要用脚注不需要只是补充说明用尾注注释极短、和正文是并行关系用边注。这三者的选择比任何格式参数都更影响阅读体验。6. 中文排版下的几个额外注意点6.1 编号样式与标点在ctex文档类或加载了ctex宏包的环境里脚注编号默认仍然是阿拉伯数字这一点和很多人以为的自动变成中文数字不同。想要中文编号得自己改\renewcommand{\thefootnote}{\chinese{footnote}}\chinese由ctex提供展开成一、二、三。但要注意两个问题一是超过十之后会变成十一、十二上标之后占位明显变宽正文行距可能被撑开二是中文编号在小字号上标状态下辨识度不如数字尤其是一和二在 6pt 大小时几乎难以区分。我的建议是正文脚注继续用阿拉伯数字只有在注释极少比如作者单位说明的场景下才用符号或中文数字。形式服从功能这不算妥协。另一个细节是脚注内容末尾的标点。中文排版习惯是注释文字末尾加句号西文习惯是只有完整句子才加。混合排版时容易不一致我的做法是全文统一脚注内容只要是完整句子就加句号是短语就不加整篇保持一致比遵循某一种规范更重要。6.2 行距、断行与避头尾中文脚注在小字号下最容易出的问题是行距过密。\footnotesize配合默认的\baselineskip比例中文字符的上下留白很小密集的笔画会粘连。解决办法是单独给脚注设置行距\renewcommand{\footnotesize}{% \fontsize{8pt}{11pt}\selectfont }这里8pt是字号11pt是基线间距比值约 1.375比默认的 1.2 宽松一些。具体数值要按正文字号调整正文 12pt 时脚注可以取 9pt/12.5pt正文 10pt 时取 8pt/11pt。这个比例没有绝对标准打印稿可以紧一点屏幕阅读可以松一点。断行方面中文脚注必须开启\raggedright或者保证有足够好的断行点否则两端对齐会在短行里拉出巨大的字间距。footmisc的flushmargin选项已经隐含了左对齐的倾向但保险起见可以在脚注内容里显式加\raggedright或者全局设置\usepackage[hang,flushmargin]{footmisc} \renewcommand{\footnotetext}[1]{...} % 不推荐见下重定义\footnotetext是个坏主意它会破坏footmisc自己的挂钩机制。正确做法是用\makefntext的定制接口或者干脆接受flushmargin带来的左对齐效果。我在实际项目里试过重定义\footnotetext结果是\footref失效、编号错乱排查了半天才发现是自己埋的雷。提示改脚注格式时永远优先用宏包提供的选项其次是改\makefntext最后才考虑直接重定义\footnote或\footnotetext。顺序颠倒会带来大量难以定位的连带问题。7. 踩坑实录与排查速查表7.1 六类高频问题的真实成因脚注编号重复或跳号。八成是因为在某个局部环境minipage、\parbox、表格里用了脚注计数器被局部化后又恢复导致外部视角看起来跳了一下。排查方法是把该段内容单独抽出来编译看编号是否连续。另一种可能是同时加载了footmisc的perpage和手动\setcounter两者互相覆盖。脚注内容出现在下一页。这一页的\footins空间不够了LaTeX 把放不下的脚注推到了下一页。这不是错误是分页算法在做权衡。如果必须留在本页可以调小\skip\footins和\footnotesep腾出空间或者用\enlargethispage{\baselineskip}临时加高这一页。实在不行就把某条长脚注改写成尾注。编译报错Argument of \caption has an extra }。图表或章节标题里有未保护的\footnote。加\protect或者在标题里改用\footnotemark。\footref未定义。没加载hyperref或者加载顺序有问题——hyperref要在绝大多数宏包之后加载但要在footmisc之前或之后需要实测确认不同版本行为不一致。脚注线粗细不变。改了\footnoterule但没生效通常是改在了导言区之前或者被模板文件里后续的定义覆盖了。检查方法是在\begin{document}之前用\show\footnoterule打印当前定义。另外有些模板把\footnoterule定义在.cls里并用\AtBeginDocument挂钩你的修改如果写在导言区反而会被覆盖这种情况要用\AtBeginDocument{\renewcommand{\footnoterule}{...}}。脚注字号改了但行距没变。只改\footnotesize的字号参数而没同步\baselineskip或者用\small替换时忽略了\small自带的基线间距。用\fontsize{}{}\selectfont显式指定最稳。7.2 参数速查表想改什么改哪里推荐值10pt 正文常见误改脚注编号形式\thefootnote\arabic{footnote}直接改\footnote定义编号重置时机计数器挂钩\counterwithin*{footnote}{chapter}手动\setcounter脚注区离正文距离\skip\footins1\baselineskip plus 3pt minus 2pt只改\footnotesep脚注之间距离\footnotesep0.5\baselineskip误以为是线到正文的距离分隔线长度粗细\footnoterule宽0.4\columnwidth粗0.5pt只改宽度不改 kern脚注字号行距\footnotesize8pt/11pt只改字号悬挂缩进footmisc选项hang,flushmargin重定义\footnotetext每页重置编号footmisc选项perpage与手动重置混用表格内脚注\footnotemark\footnotetext显式编号在tabular内直接\footnote标题内脚注\protect或拆分\protect\footnote{}不加保护直接写7.3 我自己反复用到的几条经验第一条先确定编号策略再动版式。编号是逻辑层版式是表现层顺序反了会白做很多工作。我见过有人花两小时调脚注间距最后发现模板要求每章重置编号重置之后脚注数量变了间距又得重调。第二条永远用有多条脚注的样张测试。单条脚注看不出\footnotesep、看不出分隔线的居中效果、看不出跨页行为。我一般会造一个包含 8 条脚注、其中两条超过三行的测试页所有参数都在这页上验证。第三条别在脚注里放浮动体。\footnote里写\begin{figure}不会报错但图会跑到别处脚注区只剩一个空位非常难排查。脚注里最多放行内公式、简单的列表和表格用tabular且宽度受限复杂内容一律改成尾注。第四条保留一份干净编译的基线。改脚注设置的过程中警告数量是最灵敏的指标。我习惯每次改动后数一下.log里的警告条数多出一条就立刻回查——脚注相关的很多问题不会报错只会静默地产生错误输出警告是唯一的提示。第五条中文文档里脚注数量和页高的关系要实测。理论上\footins会自动计算但中文字符的实际高度和西文字体的度量有偏差尤其是混排英文单词、数字时脚注区的高度估算会有几个点的误差。这个误差在同一页脚注多的时候会累积导致最后一行被压到页面外。解决办法是给\skip\footins加minus让 LaTeX 有压缩余地而不是硬碰硬。
延伸阅读

更多相关文章

2026/11/2 20:39:22

分布式对象存储系统设计与性能优化实践

1. 分布式对象系统概述分布式对象系统是现代云计算和大数据基础设施的核心组件之一。它通过将数据分散存储在多个物理节点上,同时对外提供统一的访问接口,解决了传统集中式存储系统在可扩展性和可靠性方面的瓶颈。典型的分布式对象系统由以下几个关键部分…

2026/11/2 20:34:21

DeBERTa-v3-large 解耦注意力与增强掩码解码器深度解析

DeBERTa-v3-large 这个模型名字,很多做 NLP 的朋友都见过,但真正把它拆开看内部结构的人并不多。大多数人停留在“它比 BERT 强、比 RoBERTa 强”这个印象层面,调包跑个分类任务就结束了。可一旦遇到显存吃紧、推理变慢、微调不收敛、长文本效…

2026/11/2 20:34:21

设备巡检智能化转型:破解三大盲区的系统方案

1. 设备巡检的现状与挑战设备巡检作为企业资产管理的重要环节,在工业生产、基础设施维护等领域扮演着关键角色。但现实中,很多企业的巡检工作看似按部就班,实则存在诸多未被察觉的漏洞。我从事设备管理工作十余年,见过太多因巡检盲…

2026/11/2 21:29:26

监控 AI 搜索引用的 5 个最佳 API(2026):GEO 数据层怎么搭

GEO(生成式引擎优化)是 2026 年最火的概念之一,但我聊下来的团队,十个有九个卡在同一个地方:SaaS 工具订阅买了,报表很好看,数据层是黑的——你不知道 AI 概览引了哪些站,就不知道该…

2026/11/2 21:29:26

AI如何辅助检查备份、生成脚本、验证方案和识别残余风险

AI在运维中的价值,不能只看它会不会回答问题。真正耗费工程师时间的,往往是一些细密工作:检查备份是否完整,为现场生成诊断脚本,执行后验证结果,最后从大量记录中找出没有处理干净的风险。这些任务都需要阅…

2026/11/2 21:29:26

算法分析与设计期末复习参考

启发式搜索 一、概念(极简背诵版) 状态空间:问题所有合法状态 状态转移规则构成的集合,搜索就是在状态空间里找路径。图灵机:抽象计算模型,由读写头、纸带、状态集组成;能刻画所有可计算问题。…

2026/11/2 21:29:26

保时捷卡宴降20万,奥迪A8降30万,豪车降价真有这么狠?

最近几年只要说起豪车降价,相信大多数人都不会陌生,前几个月十几万买一台路虎,到了这个国庆假期甚至有了保时捷卡宴降价20万,奥迪A8降价30万的消息,让人不禁想问这豪车降价真有这么狠?一、豪车又降价了&…

2026/11/2 21:24:26

ChainUQ论文阅读总结

# ChainUQ论文阅读总结> 论文信息:ChainUQ: Reasoning Consistency‑Aware Uncertainty Quantification for Large Language Models,arXiv:2609.26060 ## 一、文章主要内容大语言模型(LLM)具备强大的多步推理能力,但经常出现**中间推理步骤互相矛盾,但输出的最终结论…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑