这floatrow
包,可用于自定义浮动布局,还允许向表格添加脚注以及其他说明(除标题外)。(主要命令是\mpfootnotemark
、\footnotetext
和\floatfoot
,请参阅手册第 25-26 页。)还可以配置实际表格内容的格式(例如\sffamily\small
)和说明(例如\sffamily\scriptsize
)。但是,我还没有找到使用更改脚注标记和脚注文本格式的方法floatrow
。有什么想法吗?
(注:\ttabbox
本示例中的命令虽然不是必需的,但它将使脚注/说明的宽度适应实际表格材料的宽度,并将标题置于表格上方而不是下方。caption
包与 配合使用floatrow
,用于更改字幕的格式。)
\documentclass[12pt]{article}
\usepackage[font={sf,small}]{floatrow}
\floatsetup[table]{footnoterule=none,footskip=0.5\skip\footins}
\usepackage[font=sf]{caption}
\captionsetup{footfont=scriptsize}% "footfont" defined by floatrow package
\begin{document}
\begin{table}
\ttabbox{%
% \centering% Default for floatrow package
\begin{tabular}{cc} \hline
Author & Title \\ \hline
Knuth & The \TeX book\mpfootnotemark[1] \\
Lamport & \LaTeX \\ \hline
\end{tabular}%
\footnotetext[1]{\TeX\ only}%
\floatfoot{All books listed are indispensable reading.}%
}{%
\caption{\TeX/\LaTeX\ books}%
}
\end{table}
\end{document}
答案1
经过floatrow.sty
几个小时的搜索,我认为这是一个遗漏的问题。浮动中的脚注仍然使用小页脚注的“正常”机制,即格式不适应\captionfootfont
(用于附加说明)或\floatfont
(用于实际表格材料)。解决方案:在浮动内部,(编辑:)\@makefntext
和\@makefnmark
需要重新定义。(为了方便起见,我使用了etoolbox
包来执行此操作。)
注意:我在示例中添加了一个小页面,以表明小页面内的脚注不受影响。
\documentclass[12pt]{article}
\usepackage[font={sf,small}]{floatrow}
\floatsetup[table]{footnoterule=none,footskip=0.5\skip\footins}
\usepackage[font=sf]{caption}
\captionsetup{footfont={sf,scriptsize}}% "footfont" defined by floatrow package
\usepackage{etoolbox}
\makeatletter
\FR@everyfloat={%
\ifundef{\KOMAClassName}{% NEW
\patchcmd{\@makefnmark}{\normalfont}{}{}{}% NEW
\pretocmd{\@makefntext}{\captionfootfont}{}{}% NEW
}{% NEW
\renewcommand*{\ftn@font}{\captionfootfont}% NEW; for KOMA-Script-classes
}% NEW
\let\@footnotetext\@mpfootnotetext
\def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
\floatobjectset\floatfont
}
\makeatother
\begin{document}
\begin{table}
\ttabbox{%
% \centering% Default for floatrow package
\begin{tabular}{cc} \hline
Author & Title \\ \hline
Knuth & The \TeX book\mpfootnotemark[1] \\
Lamport & \LaTeX \\ \hline
\end{tabular}%
\footnotetext[1]{\TeX\ only}%
\floatfoot{All books listed are indispensable reading.}%
}{%
\caption{\TeX/\LaTeX\ books}%
}
\end{table}
\begin{minipage}{\textwidth}
Some text inside a minipage.\footnote{And a footnote.}
\end{minipage}
\end{document}
编辑:更改了代码示例以便与包一起使用hyperref
。
编辑2:为-classes 的特殊脚注定义添加代码KOMA-Script
。
编辑 3:除了复制标记列表的原始内容外\FR@everyfloat
,还可以使用 LaTeX 内核宏\addto@hook
将代码附加到列表的定义中。请参阅如何将材料附加到令牌列表?了解详情。
\makeatletter
\addto@hook{\FR@everyfloat}{%
\ifundef{\KOMAClassName}{% NEW
\patchcmd{\@makefnmark}{\normalfont}{}{}{}% NEW
\pretocmd{\@makefntext}{\captionfootfont}{}{}% NEW
}{% NEW
\renewcommand*{\ftn@font}{\captionfootfont}% NEW; for KOMA-Script-classes
}% NEW
}
\makeatother