我有一些图,我想使用 subfloat 将它们组合成一个图作为子图。我想将它们对齐为每行两个,但它们似乎太大了(超出 \hbox)。尽管如此,我希望它们位于一行上并居中,这意味着它们应该与工作表的左边框和右边框具有相同的距离。
下面的代码是我的一个图表的精简版,展示了问题。
\documentclass[a4paper,10pt]{scrreprt}
\usepackage{pgfplots}
\usepackage{subfig}
\usepackage{blindtext}
\begin{document}
\begin{figure}
\centering
\subfloat[]{
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
\subfloat[]{
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
\end{figure}
\blindtext
\end{document}
正如您在结果页面中看到的,图形距离右边界比距离左边界更近。
我似乎无法以任何方式移动它们。正如你所见,我试过\centering
,而且我也试过,但\subfloatrow
无济于事。
答案1
用于\makebox
将“官方宽度”设置为零。这将消除overfull \hbox
警告(因为 TeX 现在认为图像宽度为零点)并使框居中:
\documentclass[a4paper,10pt]{scrreprt}
\usepackage{pgfplots}
\usepackage{subfig}
\usepackage{blindtext}
\begin{document}
\begin{figure}
\centering
\makebox[0pt]{
\subfloat[]{
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
\subfloat[]{
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
}
\end{figure}
\blindtext
\end{document}
答案2
您想调整大小还是只是移动它们?您可以轻松调整它们的大小以\textwidth
使用\resizebox{\textwidth}{!}{ }
(在figure
环境内),恕我直言,这样看起来会更好。
\documentclass[a4paper,10pt]{scrreprt}
\usepackage{pgfplots}
\usepackage{subfig}
\usepackage{blindtext}
\begin{document}
\begin{figure}
\resizebox{\textwidth}{!}{
\subfloat[]{
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
\subfloat[]{
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
}
\end{figure}
\blindtext
\end{document}
这是移位的示例代码,使用subcaption
Donut E. Knot 在其评论中提到的方法,效果会比 更好subfloat
。这应该可以帮助您入门。
\documentclass[a4paper,10pt]{scrreprt}
\usepackage{pgfplots}
\usepackage{subcaption}
\usepackage{subfig}
\usepackage{blindtext}
\newsavebox{\mybox}
\newlength{\boxwidth}
\newenvironment{myenv}{%
\begin{lrbox}{\mybox}%
}{%
\end{lrbox}%
\setlength{\boxwidth}{\the\wd\mybox}%
\addtolength{\boxwidth}{-\textwidth}%
\hspace*{-0.5\boxwidth}\makebox[\the\wd\mybox][c]{%
\usebox{\mybox}%
}%
}
\begin{document}
\blindtext
\begin{figure}[hbtp]
\begin{myenv}
\begin{subfigure}[c]{0.6\textwidth}
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
\caption{Left figure}
\label{fig:Left}
\end{subfigure}
\qquad
\begin{subfigure}[c]{0.6\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[]
\end{axis}
\end{tikzpicture}
\caption{Right figure}
\label{fig:Right}
\end{subfigure}
\end{myenv}
\caption{Left and right figures side by side}
\label{fig:Group}
\end{figure}
\blindtext
\end{document}
答案3
建议使用 的解决方案subcaption
。
\documentclass[preview,border=12pt]{standalone}% change it back to your document class
\usepackage{pgfplots}
\usepackage{subcaption}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{figure}[hbtp]
\centering
\subfigure[c]{.4\linewidth}
\centering
\begin{tikzpicture}[scale=0.6]
\begin{axis}[]
\end{axis}
\end{tikzpicture}
\caption{Left figure}
\label{fig:Left}
\endsubfigure
\qquad
\subfigure[c]{.4\linewidth}
\centering
\begin{tikzpicture}[scale=0.6]
\begin{axis}[]
\end{axis}
\end{tikzpicture}
\caption{Right figure}
\label{fig:Right}
\endsubfigure
\caption{Left and right figures side by side}
\label{fig:Group}
\end{figure}
\blindtext
\end{document}
答案4
尝试使用scale
选项,tikzpicture
如下面的代码所示:
\documentclass[a4paper,10pt]{scrreprt}
\usepackage{pgfplots}
\usepackage{subfig}
\usepackage{blindtext}
\begin{document}
\begin{figure}
\centering
\subfloat[]{
\begin{tikzpicture}[scale=0.7]
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
\subfloat[]{
\begin{tikzpicture}[scale=0.7]
\begin{axis}[]
\end{axis}
\end{tikzpicture}
}
\end{figure}
\blindtext
\end{document}