El siguiente código produce 3 imágenes una al lado de la otra, cada imagen tiene un título y termina con un título general debajo de las 3 imágenes.
Mi documento tiene un título con un bloque de autor, luego un resumen y algunas secciones con párrafos de texto. Cuando compilo este código, mi texto delIntroducciónllena la primera página y mis imágenes se envían a la parte superior de la página siguiente. Además, el documento utiliza 2 columnas (de ahí el asterisco después figure
).
¿Cómo puedo colocar las imágenes encima del resumen, debajo del título?
\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}
¿Qué he probado?
float
paquete usando[H]
despuésfigure*
- Cambiando la posición de
\maketitle
- Utilice minipáginas en su lugar
Cómo se ve:
Cómo debería verse:
Omití la mayor parte del texto por motivos de privacidad. Tenga en cuenta que soy nuevo en LaTeX.
Gracias de antemano.
EDITAR: Si cambia IEEEtran a artículo, las imágenes parecen posicionarse correctamente (casi), pero no creo que pueda cambiar esto.
Respuesta1
Puedes conectarte \@maketitle
, esa es la macro responsable de imprimir el título.
Sin embargo, hay algunas cosas que debes tener en cuenta:
hyperref
debería ir el últimocaption
ysubcaption
sonnoLa compatibilidad conIEEEtran
ellos y su uso hace que todos los subtítulos se escriban en un estilo que no es el deseado por IEEE, lo que puede provocar el rechazo de su envío. Puede ver en la imagen a continuación que el estilo de IEEE es tener subtítulos alineados a la izquierda, nunca centrados como si estuvieran impresos si los cargacaption
(tal vez a través desubcaption
). Con
\usepackage[caption=false]{subfig}
el problema desaparece. Sin embargo, la sintaxis de los subfloats es diferente; consulte el código.
También puse comentarios junto a algunos paquetes deshabilitados.
\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}
No es relevante, pero por razones misteriosas la plantilla proporcionada por IEEE contiene la parte tonta
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
lo cual es incorrecto en muchos aspectos y, sobre todo, completamente inútil. Retírelo. Además, es mejor colocar la instrucción \graphicspath
en el preámbulo, ya que es una configuración global.
Respuesta2
LaTeX proporciona flotantes que abarcan columnas solo con opciones t
y/o p
, pero no h
. Además, la opción H
del paquete float
no se puede utilizar con figure*
o table*
(o la versión estrella de otros flotadores definidos nuevos).
Podrías usar el \twocolumn
truco y evitar usar un flotador:
\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}
Como alternativa se puede hacer un mal uso \author
, pero en este caso también hay que corregir manualmente el número de figura:
\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}
Por último, pero no menos importante, puedes usar el paquete stfloats
para colocar la figura.en el fondode la primera página:
\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}
El paquete dblfloatfix
que también sugerí en mi primer comentario a su pregunta parece no funcionar con IEEEtran
. Si lo reemplaza \usepackage{stfloats}
con \usepackage{dblfloatfix}
, la figura aún estará impresa en la parte superior de la segunda página.
AFAIK, no existe ningún paquete que admita columnas flotantes que abarquen columnas con la opción h
(o H
). Entonces, en mi humilde opinión, debes usar uno de los trucos, también conocidos como hacks, o una figura colocada en la parte inferior stfloats
o una figura colocada en la parte superior de lapróximopágina.