无法更改图例中的字体大小

无法更改图例中的字体大小

我正在尝试将所有图表和表格的图例中的字体大小设置得更小。我尝试使用 \AtBeginEnvironment 来实现这一点,但似乎没有任何效果。这是一个失败的简单示例:

\documentclass[a4paper, 12pt]{report}

\usepackage{etoolbox}
\usepackage{relsize}

\AtBeginEnvironment{figure}{\smaller}

\begin{document}
\begin{figure}
\caption{whatever}
Text
\end{figure}

Outside text
\end{document}

现在,我认为应该使“文本”看起来比“外部文本”小,就像将其放在\smaller图形环境中一样。但事实并非如此。我尝试使用 floatrow 包,但它会弄乱图形标题和图例文本的顺序,并且\captionsetup只会改变标题本身而不会改变图例文本。

有什么帮助吗?为什么不起作用\AtBeginEnvironment

答案1

环境所做的最后一件事figure是发出内部命令,\@floatboxreset其定义是

\def\@floatboxreset{%
  \reset@font
  \normalsize
  \@setminipage
}

这就是为什么\smaller声明没有效果,因为中的标记\AtBeginEnvironment更早被发现。

你应该改变\@floatboxreset

\makeatletter
\AtBeginEnvironment{figure}{%
  \def\@floatboxreset{\reset@font\small\@setminipage}%
}
\makeatother

该变化不会泄漏到环境之外。

如果您正在使用setspace,则应该做更多的事情,因为软件包补丁\@xfloat会再次发布\normalsize,在我看来,这是一个错误,这就\selectfont足够了。

\documentclass[a4paper, 12pt]{report}

\usepackage{etoolbox}
\usepackage{setspace}

\makeatletter
\AtBeginEnvironment{figure}{%
  \def\@floatboxreset{\reset@font\small\@setminipage}%
}
\patchcmd{\@xfloat}{\normalsize}{\selectfont}{}{}
\makeatother

\begin{document}
\begin{figure}
\caption{whatever}
Text
\end{figure}

Outside text
\end{document}

答案2

一种方法可能是重新声明@makecaption命令。
首先,我们定义标题(图形或表格)的字体和大小以及标题文本的字体。然后\@makecaption重写:

\documentclass[]{article}
\usepackage{mwe}
\usepackage{graphicx}

\newcommand*{\textCapTitFont}[1]{\textbf{#1}}  
\newcommand*{\Captionfont}{\small\sffamily}
\makeatletter
    \long\def\@makecaption#1#2{%
      \vskip\abovedisplayskip\Captionfont%
      \setbox\@tempboxa\hbox{\textCapTitFont{#1}~~#2}%
      \ifdim \wd\@tempboxa > \hsize
        \textCapTitFont{#1}~~#2\par                  
      \else
        \hbox to \hsize{\hfill\box\@tempboxa\hfill}%
      \fi
      \vskip\belowcaptionskip}
\makeatother

\begin{document}
Some normal text, not beeing in a caption, just to compare 
\begin{figure}\centering
\includegraphics[width=0.5\linewidth]{example-image-a}
\caption{This is an explanation \ldots}
\end{figure}
\end{document}

看起来像这样: 在此处输入图片描述

相关内容