floatrow:更改表格脚注的格式

floatrow:更改表格脚注的格式

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

相关内容