! LaTeX 错误:不在外部 par 模式

! LaTeX 错误:不在外部 par 模式

我正在使用其中的图像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环境可能不会出现在minipages 中。 figure是一个浮动环境,但您想将图形放置在特定位置。原则上,您所需要的只是\includegraphics,但正如您所注意到的,您没有获得期望的垂直空间,因此可能存在其他问题。

让我浏览一下您的设置并讨论几点。

每个minipage都会生成一个排版材料框,这些材料的放置方式基本上与您输入的单个字符一样。特别是,minipages 之间的空行将开始新的段落,因此不会停留在同一行。因此,示例代码中的许多空行都需要删除。

接下来,考虑到这一点,您使用的许多其他构造不需要封装在 中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}

相关内容