Приведенный ниже код создает 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
- Вместо этого используйте мини-страницы
На что это похоже:
Как это должно выглядеть:
Я опустил большую часть текста из-за проблем с конфиденциальностью. Пожалуйста, имейте в виду, что я новичок в LaTeX.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Если изменить IEEEtran на article, то изображения, похоже, будут располагаться правильно (почти), но я не думаю, что смогу это изменить.
решение1
Вы можете подключиться к \@maketitle
, это макрос, отвечающий за печать заголовка.
Однако есть несколько вещей, о которых вам следует знать:
hyperref
должен идти последним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}
В качестве альтернативы вы можете неправильно использовать \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}
Пакет dblfloatfix
, который я также предложил в своем первом комментарии к вашему вопросу, похоже, не работает с IEEEtran
. Если вы замените \usepackage{stfloats}
на \usepackage{dblfloatfix}
, рисунок все равно будет напечатан вверху второй страницы.
AFAIK нет пакета, который поддерживает столбцы охватывающих float с опцией h
(или H
). Так что IMHO вам нужно либо использовать один из трюков он же хаки или нижнюю размещенную фигуру с stfloats
или верхнюю размещенную фигуру в верхней частиследующийстраница.