我正在使用其中的图像minipage
并收到错误消息。
! LaTeX Error: Not in outer par mode.
以下是最小的工作示例。
\documentclass[11pt,table,a4paper]{article}
\usepackage{array,ragged2e}
\usepackage{graphicx}
\usepackage[top=2cm, bottom=3cm,right=1cm, left=1cm, headsep=26pt]{geometry}
\usepackage[T1]{fontenc}
\usepackage{sidecap}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\begin{minipage}[t]{.98\linewidth}
\begin{minipage}[t]{0.33\linewidth}
ABC
\end{minipage}
\begin{minipage}[t]{0.05\linewidth}
\hspace{2cm}
\end{minipage}
\begin{minipage}[t]{0.4\linewidth}
\begin{minipage}[t]{0.5\linewidth} \textbf{Some text} \end{minipage}
\begin{minipage}[t]{0.25\linewidth} \begin{figure}[h!] \includegraphics[width=1.0\textwidth]{risk2.png} \end{figure} \end{minipage}
\end{minipage} % Error is due to using figure in minipage
\end{minipage}
\end{document} % End of document.
我该如何解决这个问题?
答案1
首先总结一下评论:figure
环境可能不会出现在minipage
s 中。 figure
是一个浮动环境,但您想将图形放置在特定位置。原则上,您所需要的只是\includegraphics
,但正如您所注意到的,您没有获得期望的垂直空间,因此可能存在其他问题。
让我浏览一下您的设置并讨论几点。
每个minipage
都会生成一个排版材料框,这些材料的放置方式基本上与您输入的单个字符一样。特别是,minipage
s 之间的空行将开始新的段落,因此不会停留在同一行。因此,示例代码中的许多空行都需要删除。
接下来,考虑到这一点,您使用的许多其他构造不需要封装在 中minipage
。这尤其适用于\hspace
命令。您可以直接编写
\begin{minipage}...\end{minipage}\hspace{...}\begin{minipage}...\end{minipage}
正如你所写
a\hspace{...}b
获取对象之间的水平间距。
类似地,可以直接包含图像;该\includegraphics
命令会生成另一个排版材料框,其位置也与字符非常相似。\raisebox
如有必要,您可以使用它来调整其垂直位置。
另一方面,如果您使用是figure
因为您希望有标题和图号,那么使用minipage
包含这些和标题将是合适的。然后您可以使用caption
包,如下\captionof
所示:
\begin{minipage}[t]{0.4\linewidth}
\vspace{-2ex}
\includegraphics{...}
\captionof{figure}{Caption}
\end{minipage}
请注意在图形前使用\vspace
;如果没有它,的第一行minipage
会非常高,但[t]
选项会与第一行的基线对齐,minipage
因此图像会突出。 -2ex
本质上是大写字母的高度,并将图像放置在与大写字母对齐的位置。参见使用小页面将图像和文本对齐到顶部进一步讨论 s 中的图像对齐minipage
。
这是将这些东西放在一起的示例的修改版本(不相关的包已被删除):
\documentclass[11pt,a4paper]{article}
\usepackage{graphicx,caption}
\usepackage[top=2cm, bottom=3cm,right=1cm, left=1cm, headsep=26pt]{geometry}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\begin{minipage}[t]{.98\linewidth}
\begin{minipage}[t]{0.33\linewidth}
\setlength{\parindent}{1em}
Some text over several lines.
Some text over several lines.
Some text over several lines in a new paragraph.
\end{minipage}
\hspace{4em plus 1fill}
\begin{minipage}[t]{0.2\linewidth}
\setlength{\parindent}{1em}
Some text over several lines.
Some text over several lines.
Some text over several lines in a new paragraph.
\end{minipage}
\quad
\begin{minipage}[t]{0.2\linewidth}
\vspace{-2ex}
\includegraphics[width=1.0\linewidth]{example-image-a}
\captionof{figure}{Caption}
\end{minipage}
\end{minipage}
\end{document}
我习惯\quad
将图像minipage
与文本分隔开。这相当于\hspace{1em}
。对于前两个块之间的空间,我使用了\hspace{4em plus 1fill}
,这是至少四个四边形,但会延伸以填满可用空间。这里的效果是,您的第一个小页面与左对齐,而最后一对小页面与右对齐。
在中minipages
,我设置了段落缩进;默认情况下它们为零。
请注意,这minipage
是一个相当复杂的结构。如果材料很长并且包含多个段落,则它是合适的。如果只有一个段落,那么\parbox
是更好的选择。参见\parbox 与 minipage:适用性差异进行讨论。
答案2
添加并使用图中的\usepackage{float}
选项。[H]
\documentclass{article}
\usepackage{graphicx}
\usepackage{float} %figure inside minipage
\begin{document}
\begin{minipage}{0.48\textwidth}
\begin{figure}[H]
\caption{\label{fig:label} Figure title}
\includegraphics[width=\textwidth]{filename}
\end{figure}
\end{minipage}
\end{document}
答案3
以下内容显然不是问题的根源,但由于它会导致相同的错误,并且此页面是该错误在 Google 上的第一个搜索结果,因此我觉得如果可以的话,将其记录在这里可能会对未来的读者有所帮助。所以:
这
! LaTeX Error: Not in outer par mode.
也可能是由于忘记输入\end{table}
上几行内容造成的。
(通常这当然可以通过\begin{table} on line xxx followed by \end{document}
错误检测到,但就我而言,大量的外部标准模式错误在到达那里之前导致了紧急停止。)
答案4
添加\usepackage{float
} 并将minipage
(带有图形)放入图内。
\begin{figure}
\begin{minipage}
\begin{figure}
...
\end{figure}
\end{minipage}
\begin{minipage}
\begin{figure}
...
\end{figure}
\end{minipage}
\end{figure}