“中心”表格偏移,为了解决浮动数字的问题?

“中心”表格偏移,为了解决浮动数字的问题?

我正在编写一个文档,其中我使用wrapfig环境让我将文本环绕在浮动图形周围。我已将此图形(宽度为0.3\textwidth)放置在页面的右侧,并且我想包含一个表格,该表格与环绕图形的文本内联,相对于左侧居中0.7\textwidth。不幸的是:

  • 当使用常规center环境(没有table,只有tabular)时,表格相对于整个页面居中
  • 当使用table环境时,表格会相对于文本浮动 - 我希望它准确地停留在我放置的位置,而不是像图形一样移到页面的底部或顶部(而且我真的不知道如何将其居中)
  • 使用时wraptable,我收到有关包装图形碰撞的警告,并且表格继续相对于文本浮动

有没有什么方法可以告诉 LaTeX 将环境仅置于页面tabular左侧的“中心”?0.7\textwidth

编辑:为了更清楚起见,这是我当前文件的片段:

\begin{wrapfigure}{r}{0.3\textwidth}
\includegraphics[width=0.28\textwidth]{someimage.png}
\end{wrapfigure}

Some text here...

\begin{tabular}{c}
table info...
\end{tabular}

More text here...

我非常希望布局看起来像这样:

Some text here...                                 someimage.png
                                                  someimage.png
                table info...                     someimage.png
                                                  someimage.png
More text here...                                 someimage.png

请注意表格信息如何居中,但仅位于页面的左侧部分。我正在寻找可以使用的环境来实现这一点,以及tabular我现在拥有的块。

答案1

以下是使用 来实现此目的的一种方法\parshape

在此处输入图片描述

\documentclass{article}
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\begin{document}

% Setup picture inclusion
\newsavebox{\myimage}%
\savebox{\myimage}{\includegraphics[width=.3\linewidth]{image}}%
\newlength{\mylinewidth}\setlength{\mylinewidth}{\dimexpr\linewidth-\wd\myimage-1em}% Leave a horizontal 1em gap

\null\hfill\smash{\raisebox{-\height}{\usebox{\myimage}}} \par \vspace*{-\dimexpr.7\baselineskip+\parskip}% Insert image
\parshape=1 0pt \mylinewidth
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultrices, 
nunc aliquam ultrices euismod, lorem velit hendrerit urna, vel imperdiet 
mi magna sed mauris.

\parshape=1 0pt \mylinewidth
\begin{center}
  \begin{tabular}{ccc}
    \hline
    \textbf{Heading 1} & \textbf{Heading 2} & \textbf{Heading 3} \\
    One & Two & Three \\
    \hline
  \end{tabular}
\end{center}

\parshape=3
0pt \mylinewidth 0pt \mylinewidth 0pt \linewidth
Donec et bibendum nulla. Donec laoreet mauris a turpis iaculis malesuada. 
Integer semper cursus erat, ut blandit felis posuere a. Sed neque nisl, 
porttitor eu viverra in, scelerisque vel nisi. Aliquam consectetur aliquam 
facilisis. Proin magna velit, euismod eget pretium eu, euismod ut velit. 
Praesent adipiscing imperdiet arcu eget congue. Integer et tellus ut quam 
blandit malesuada.

\end{document}

首先设置图片,然后设置一个段落,该段落1em通过 使文本和图片之间留出水平空间\parshape=1 0pt \mylinewidth。这里\mylinewidth具体设置为\linewidth-<image width>-1em。后续段落也使用此方法设置,而最后一段宽度仅针对受图片放置影响的行进行修改。在 MWE 中,这包括仅有的前 3 行 - 前两行设置在 内\mylinewidth,而第三行(及后续行)延伸整个\linewidth

关于\parshape原语,以下内容取自第 14 章:TeX 如何将段落分成行(TeX Book 第 101 页):

您可以通过以下方式指定一个本质上任意的段落形状 \parshape=<number>,其中<number>是一个正整数n,后跟2n <dimen>规范。通常,\parshape=n i1 l1 i2 l2 ... in ln指定一个段落,其前n几行的长度分别为l1l2、... ,ln并且它们将从左边距缩进相应的量i1i2、... 。in如果段落少于n行,则将忽略其他规范;如果段落多于行,则将无限重复行n的规范。您可以通过以下方式 取消先前指定的 的效果。n\parshape\parshape=0

如果您希望图像从不同的行开始,可以修改布局。

相关内容