我搜索了两个小时,但一无所获。所以我希望有人能帮我解决这个问题。基本上我想将两个不同的图并排放置以节省报告中的空间。所以我不想在这里使用具有共同标题的子图。
我尝试使用 minipage 如下:
\begin{figure}[ht]
\begin{minipage}[b]{.5\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test1.png}
\caption{This is caption of test1.}
\label{fig:HOG_resolution}
\end{minipage}
\hfill
\begin{minipage}[b]{.4\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test2.png}
\caption{This caption for test 2 is longer than the caption in test1. It should spread on two lines}
\label{fig:block_overlap}
\end{minipage}
\end{figure}
我的图表显示正常,除了标题。第一个标题缺失,第二个标题显示在第一个标题的位置。
我的序言如下:
\documentclass[11pt]{report}
\usepackage{graphics}
\usepackage{graphicx}
\usepackage{caption}
\usepackage[caption=false]{subfig}
\usepackage{float}
\usepackage{multirow}
\restylefloat{figure}
\usepackage[top=2.5cm, bottom=2.5cm, left=2.75cm, right=2.75cm]{geometry}
\usepackage[titles,subfigure]{tocloft}
\usepackage[bookmarks]{hyperref}
\lstnewenvironment{code}[1][]
{\minipage{\linewidth}
\lstset{#1}}
{\endminipage}
\newcommand{\myvec}[1]{\bf{#1}}
\newcommand{\mymtrx}[1]{\bf{#1}}
我也尝试过\captionof
(\caption
你可能看到我\usepackage{caption}
在序言中提到了),但它不起作用。我还使用包,subfig
因为我也想并排创建子图,而且我没有遇到任何问题。
答案1
此代码演示了这个问题:
\documentclass{report}
\usepackage[demo]{graphicx}
\usepackage{float}
\restylefloat{figure}
\begin{document}
\begin{figure}[ht]
\begin{minipage}[b]{.5\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test1.png}
\caption{This is caption of test1.}
\end{minipage}
\hfill
\begin{minipage}[b]{.4\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test2.png}
\caption{This caption for test 2 is longer than the caption in test1. It should spread on two lines}
\end{minipage}
\end{figure}
\end{document}
序言的其余部分似乎没有受到牵连。
我不确定您还想要什么,但使用带星号的 \restylefloat 版本显然会告诉包不要管标题,这样您会得到两个标题而不是一个:
\documentclass{report}
\usepackage[demo]{graphicx}
\usepackage{float}
\restylefloat*{figure}
\begin{document}
\begin{figure}[ht]
\begin{minipage}[b]{.5\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test1.png}
\caption{This is caption of test1.}
\end{minipage}
\hfill
\begin{minipage}[b]{.4\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test2.png}
\caption{This caption for test 2 is longer than the caption in test1. It should spread on two lines}
\end{minipage}
\end{figure}
\end{document}
答案2
借助caption
包,尝试进行更好的对齐。这里\newline
根据较长标题的长度,向较短的标题添加了两个命令。
注意:但是使用 [t] 对齐可以产生相同的效果。
如果图形标题要左对齐,则只使用一个newline
并添加
\captionsetup{labelsep=space,justification=justified,singlelinecheck=off}
将产生第二幅图像。(如果:
想要 ,请删除labelsep=space
。)
代码:
\documentclass[]{article}
\usepackage[margin=1in]{geometry}
\usepackage[demo]{graphicx}
\usepackage{caption}
\begin{document}
\begin{figure}[ht]
\begin{minipage}[b]{.45\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test1.png}
\caption{This is caption of test1.\newline\newline}
\label{fig:HOG_resolution}
\end{minipage}
\hfill
\begin{minipage}[b]{.45\textwidth}
\centering
\includegraphics[width=1\textwidth]{figs/test2.png}
\caption{This caption for test 2 is longer than the caption in test1. It should spread on two lines.}
\label{fig:block_overlap}
\end{minipage}
\end{figure}
\end{document}
答案3
cfr 的答案帮我解决了这个问题,尽管我使用了表格。我在这个问题上纠结了好长一段时间,添加\restylefloat*{table}
解决了我遇到的并排表格(在两列环境中)无法渲染其中一个标题的问题。为了简洁起见,我在下面附上了表格的源代码。
\restylefloat*{table}
\begin{table*}
\parbox{.5\linewidth}{
\centering
\caption{Tabular 1.}
\label{tab:tabular1}
\begin{tabular}{ l c r }
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
}
\hfill
\parbox{.5\linewidth}{
\centering
\caption{Tabular 2.}
\label{tab:tabular2}
\begin{tabular}{ l c r }
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
}
\end{table*}