Как разместить изображения под заголовком?

Как разместить изображения под заголовком?

Приведенный ниже код создает 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]послеfigure*
  • Изменение положения\maketitle
  • Вместо этого используйте мини-страницы

На что это похоже:

изображение, показывающее, что изображения размещаются в верхней части следующей страницы, а не между заголовком и аннотацией

Как это должно выглядеть:

изображение, показывающее отредактированный в Photoshop пример изображений между заголовком и аннотацией

Я опустил большую часть текста из-за проблем с конфиденциальностью. Пожалуйста, имейте в виду, что я новичок в LaTeX.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Если изменить IEEEtran на article, то изображения, похоже, будут располагаться правильно (почти), но я не думаю, что смогу это изменить.

решение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

LaTeX предоставляет охватывающие столбцы поплавки только с опциями tи/или p, но не h. Также опция Hпакета floatне может использоваться с figure*или table*(или версией звезды других новых определенных поплавков).

Вы можете воспользоваться этим \twocolumnтрюком и избежать использования float:

\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}

с использованием stfloats

Пакет dblfloatfix, который я также предложил в своем первом комментарии к вашему вопросу, похоже, не работает с IEEEtran. Если вы замените \usepackage{stfloats}на \usepackage{dblfloatfix}, рисунок все равно будет напечатан вверху второй страницы.

AFAIK нет пакета, который поддерживает столбцы охватывающих float с опцией h(или H). Так что IMHO вам нужно либо использовать один из трюков он же хаки или нижнюю размещенную фигуру с stfloatsили верхнюю размещенную фигуру в верхней частиследующийстраница.

Связанный контент