顶部和底部图形的标题设置不同吗?

顶部和底部图形的标题设置不同吗?

有没有办法根据图形的放置位置来控制图形使用的标题格式?具体来说,我希望对放置在页面顶部的图形和放置在页面底部的图形使用不同的图形标题格式。

在我的 MWE 中,我定义了一种在标题文本下方使用水平线的格式。如果图形位于页面顶部,而标题位于图形下方,则这是可以的。但是当图形位于底部时,我会将标题放在图形上方 - 然后我想使用在文本上方有水平线的标题格式。

您认为这样的事情可能吗,甚至是自动发生的?

欢呼 Janos

为了编译我的 MWE,您需要一个名为“blackbox”的图像。

\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage{caption}
\usepackage{lipsum}
\DeclareCaptionFormat{figureFormat}{#1#2#3\hrulefill}
\captionsetup[figure]{format=figureFormat}
\begin{document}
    \begin{figure}[!t]
        \centering
        \label{fig:1}
        \includegraphics[width=\columnwidth]{blackbox}
        \caption{This figure is on the top. The caption should be on the bottom,
        and the horizontal line under it.}
    \end{figure}
    \lipsum[1]
    \lipsum[1]
    \begin{figure}[!b]
        \centering
        \caption{This figure is on the bottom, so it caption is above it. Now
        the horizontal line should be also above this text...}
        \label{fig:2}
        \includegraphics[width=\columnwidth]{blackbox}
    \end{figure}
\end{document}

答案1

正如评论中提到的,我认为没有办法自动更改标题位置。但是,LaTeX 提供了两个可以自动为您放置规则的命令:\topfigrule\botfigrule。这是一个示例,但与 Steven 的解决方案一样,这仍然需要您指定图形的位置才能获得正确的标题。(此外,请记住确保您的标签遵循标题命令或位于其中。)

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage{lipsum}
\newcommand{\topfigrule}{\vspace{5pt} \hrule \vspace{-5pt}}
\newcommand{\botfigrule}{\vspace{-5pt} \hrule \vspace{5pt}}
\begin{document}
\lipsum[1]
    \begin{figure}[t]
        \centering
        \includegraphics[width=\columnwidth]{blackbox}
        \caption{This figure is on the top. The caption should be on the bottom,
        and the horizontal line under it.}
        \label{fig:1}
    \end{figure}
\lipsum[1]
\begin{figure}[b]
    \centering
    \caption{This figure is on the bottom, so it caption is above it. Now
    the horizontal line should be also above this text...}
    \label{fig:2}
    \includegraphics[width=\columnwidth]{blackbox}
\end{figure}
\lipsum[1]
\end{document}

答案2

[!t]好吧,如果您使用或说明符明确定义顶部图形与底部图形[!b],则只需额外一步即可重新定义\captionsetuptfigureFormatbfigureFormat,如我的 MWE 所示。

Alan Munn 指出,这种解决方案不是自动的,只有当图形的位置明确时才有效。他引用了 Frank Mittelbach 的精彩回答如何影响 LaTeX 中图形和表格等浮动环境的位置?指出说明[ht]符可以自动将图形位置更改为顶部或底部,而我的技术无法应对这种情况。

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage{lipsum}
\DeclareCaptionFormat{tfigureFormat}{#1#2#3\hrulefill}
\DeclareCaptionFormat{bfigureFormat}{\hrulefill\par\medskip#1#2#3}
\begin{document}b
    \captionsetup[figure]{format=tfigureFormat}
    \begin{figure}[!t]
        \centering
        \label{fig:1}
        \includegraphics[width=\columnwidth]{blackbox}
        \caption{This figure is on the top. The caption should be on the bottom,
        and the horizontal line under it.}
    \end{figure}
    \lipsum[1]
    \lipsum[1-4]
    \captionsetup[figure]{format=bfigureFormat}
    \begin{figure}[!b]
        \centering
        \caption{This figure is on the bottom, so it caption is above it. Now
        the horizontal line should be also above this text...}
        \label{fig:2}
        \includegraphics[width=\columnwidth]{blackbox}
    \end{figure}
\end{document}

相关内容