如何將圖片放在標題下方?

如何將圖片放在標題下方?

下面的程式碼產生 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 來文章,圖像的位置似乎(幾乎)正確,但我認為我無法更改這一點。

答案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 僅透過選項和/或提供跨列浮動p,但不提供hH包的選項也不能與or (或其他新定義的浮點數的星形版本)float一起使用。figure*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}

最後但並非最不重要的一點是,您可以使用 packagestfloats來放置圖形在底部第一頁:

\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},該數字仍列印在第二頁頂部。

據我所知,沒有任何軟體包支援帶有選項h(或H)的跨列浮動。因此,恕我直言,您需要使用其中一種技巧(又名黑客)或將底部放置的圖形或stfloats頂部放置的圖形放在頂部下一個頁。

相關內容