如何将图片放在标题下方?

如何将图片放在标题下方?

下面的代码生成 3 个彼此相邻的图像,每个图像都有一个标题,并且所有 3 个图像下方都有一个通用标题。

我的文档有一个标题,其中包含作者区块,然后是摘要和一些包含文本段落的部分。当我编译此代码时,我的文本来自介绍填满第一页,我的图像被发送到下一页的顶部。此外,该文档使用 2 列(因此后面有星号figure)。

我怎样才能将图像放置在摘要上方、标题下方?

\documentclass{IEEEtran}

\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithmic}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{float}
\usepackage{graphicx}
\usepackage{subcaption}

 \usepackage[super]{nth}
 
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
    
\begin{document}

\graphicspath{ {./images/} }

\title{foo}

\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

\author{\IEEEauthorblockN{foo}
\IEEEauthorblockA{\textit{foo} \\
foo, foo \\
foo}
}

\maketitle
\begin{figure*}[!th]
    \centering
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{11\% of full render time}
        \label{fig:sceneProgressA}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{52\% of full render time}
        \label{fig:sceneProgressB}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{Full render time}
        \label{fig:sceneProgressC}
    \end{subfigure}
    \caption{Pictures of streaming progress}
    \label{fig:rendering_progress}
\end{figure*}

\begin{abstract}
Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.
\end{abstract}

\section{Introduction}

Foo bar baz.


\end{document}

我尝试过什么?

  • float[H]使用after进行封装figure*
  • 改变位置\maketitle
  • 使用 minipages 代替

它是什么样子的:

图片显示图像放置在下一页的顶部,而不是标题和摘要之间

它看起来应该是这样的:

图片显示了标题和摘要之间的图像经过 Photoshop 处理的示例

出于隐私考虑,我省略了大部分文本。请记住,我是 LaTeX 新手。

先感谢您。

编辑:如果将 IEEEtran 更改为文章,图像似乎会正确定位(几乎),但我认为我无法改变这一点。

答案1

您可能会遇到\@maketitle,这是负责打印标题的宏。

但是,您应该注意以下几点:

  1. hyperref应该最后去
  2. caption并且subcaption不是兼容IEEEtran并使用它们会导致所有标题都以 IEEE 不想要的样式排版,这可能会导致您的提交被拒绝。您可以在下图中看到,IEEE 的样式是让标题左对齐,而不是像打印的那样居中(如果您加载caption(可能通过subcaption))。使用
\usepackage[caption=false]{subfig}

问题就解决了。但是,子浮点数的语法有所不同,请参见代码。

我也在几个已禁用的包旁边添加了评论。

\documentclass{IEEEtran}

\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithm}
\usepackage{algorithmic}
%\usepackage{textcomp}% useless
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{float}
\usepackage{graphicx}
\usepackage[super]{nth}
%\usepackage{subcaption} % not compatible with IEEEtran
\usepackage[caption=false]{subfig}
\usepackage{capt-of}
\usepackage{hyperref}% should go last

% this is just for this example
\usepackage{lipsum}

% hook into \@maketitle to add the wanted figure
\AddToHook{cmd/@maketitle/after}{\ADDINITIALFIGURE}
% the code for the figure
\newcommand{\ADDINITIALFIGURE}{%
  % we want to emulate a fixed float
  \begin{minipage}{\textwidth}
    \vspace*{0.5\baselineskip}
    % pretend we're inside figure
    \expandafter\def\csname @captype\endcsname{figure}%
    % insert the subfloats
    \subfloat[11\% of full render time\label{fig:sceneProgressA}]{%
      \includegraphics[width=0.3\textwidth]{example-image}%
    }\hfill
    \subfloat[52\% of full render time\label{fig:sceneProgressB}]{%
      \includegraphics[width=0.3\textwidth]{example-image}%
    }\hfill
    \subfloat[Full render time\label{fig:sceneProgressC}]{%
      \includegraphics[width=0.3\textwidth]{example-image}%
    }
    % the text is processed a few times, so we reset the counter each time
    \setcounter{figure}{0}
    \captionof{figure}{Pictures of streaming progress\label{fig:rendering_progress}}
  \end{minipage}}

\graphicspath{ {./images/} }
 
\begin{document}

\title{foo}

\author{\IEEEauthorblockN{foo}
\IEEEauthorblockA{\textit{foo} \\
foo, foo \\
foo}
}

\maketitle



\begin{abstract}
Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.
\end{abstract}

\section{Introduction}

\lipsum[1][1-3]

\begin{figure}[ht]

\includegraphics[width=\columnwidth]{example-image}
\caption{Test caption}

\end{figure}

\lipsum

\end{document}

在此处输入图片描述

不相关,但不知何故,IEEE 提供的模板包含了愚蠢的部分

\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

这在很多方面都是错误的,最重要的是,它完全没用。删除它。另外,该指令\graphicspath最好放在序言中,因为它是一个全局设置。

答案2

tLaTeX 仅通过选项and/or提供跨列浮点数p,而不提供 。此外,包的h选项不能与or (或其他新定义浮点数的星号版本)一起使用。Hfloatfigure*table*

您可以使用这个\twocolumn技巧并避免使用浮点数:

\documentclass{IEEEtran}

\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithmic}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{float}
\usepackage{graphicx}
\usepackage{subcaption}

 \usepackage[super]{nth}
 
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

\begin{document}

\graphicspath{ {./images/} }

\title{foo}

\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

\author{\IEEEauthorblockN{foo}
\IEEEauthorblockA{\textit{foo} \\
foo, foo \\
foo}
}

\twocolumn[{%
  \csname @twocolumnfalse\endcsname
  \maketitle
  \captionsetup{type=figure}% Tell (sub)caption, that this is a figure
    \centering
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{11\% of full render time}
        \label{fig:sceneProgressA}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{52\% of full render time}
        \label{fig:sceneProgressB}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{Full render time}
        \label{fig:sceneProgressC}
    \end{subfigure}
    \caption{Pictures of streaming progress}
    \label{fig:rendering_progress}
}]

\begin{abstract}
Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.
\end{abstract}

\section{Introduction}

Foo bar baz.

\end{document}

使用 \twocolumn 技巧

另外,您也可以误用\author,但在这种情况下,您还必须手动更正图形编号:

\documentclass{IEEEtran}

\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithmic}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{float}
\usepackage{graphicx}
\usepackage{subcaption}

 \usepackage[super]{nth}
 
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

\begin{document}

\graphicspath{ {./images/} }

\title{foo}

\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

\author{\IEEEauthorblockN{foo}
\IEEEauthorblockA{\textit{foo} \\
foo, foo \\
foo}
\vskip 2\baselineskip
\begin{minipage}{\textwidth}
  \setcounter{figure}{0}% Otherwise, you will get Fig. 3 instead of Fig. 1!!!
  \captionsetup{type=figure}% Tell (sub)caption, that this is a figure
    \centering
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{11\% of full render time}
        \label{fig:sceneProgressA}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{52\% of full render time}
        \label{fig:sceneProgressB}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{Full render time}
        \label{fig:sceneProgressC}
    \end{subfigure}
    \caption{Pictures of streaming progress}
    \label{fig:rendering_progress}
\end{minipage}
}

  \maketitle

\begin{abstract}
Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.
\end{abstract}

\section{Introduction}

Foo bar baz.


\end{document}

最后但同样重要的是,您可以使用包stfloats来放置图形在底部第一页:

\documentclass{IEEEtran}

\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithmic}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{float}
\usepackage{graphicx}
\usepackage{subcaption}

\usepackage{blindtext}

 \usepackage[super]{nth}
 
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}

\usepackage{stfloats}

\begin{document}

%\graphicspath{ {./images/} }

\title{foo}

\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

\author{\IEEEauthorblockN{foo}
\IEEEauthorblockA{\textit{foo} \\
foo, foo \\
foo}
}

\maketitle
\begin{figure*}[b]
    \centering
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{11\% of full render time}
        \label{fig:sceneProgressA}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{52\% of full render time}
        \label{fig:sceneProgressB}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{example-image}
        \caption{Full render time}
        \label{fig:sceneProgressC}
    \end{subfigure}
    \caption{Pictures of streaming progress}
    \label{fig:rendering_progress}
\end{figure*}

\begin{abstract}
Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.Foo bar baz.
\end{abstract}

\section{Introduction}

\Blindtext[5]


\end{document}

使用 stfloat

我在对你的问题的第一条评论中也建议使用这个包dblfloatfix,但它似乎不适用于IEEEtran。如果你\usepackage{stfloats}用替换\usepackage{dblfloatfix},该图仍然会打印在第二页的顶部。

据我所知,没有任何包支持使用选项h(或H)的跨列浮动。因此,恕我直言,您需要使用技巧(又称 hacks)之一,或者在底部放置一个图形,stfloats或者在顶部放置一个图形下一个页。

相关内容