我如何(暂时)取消居中?

我如何(暂时)取消居中?

我在那里,愉快地追寻着beamer在我追踪贝克斯希尔可怕的 Overprint Hurler 的踪迹时,我找到了完全不同的东西。它看起来像是 vbox 和 centering 的混合体,但变异得非常非常厉害。

为了在这只怪物肆虐之前将其杀死,我研究了它和它的亲属(在安全距离内)。它的行为很奇怪,但通过关在笼子里,我可以看到它对基本刺激的反应模式。最后,我意识到,如果我能引入一些基因突变,暂时关闭基因,\centering那么它就可以安全了,我就可以继续寻找 Overprint 了。


用不那么平淡的语言来说,在调查tikz 节点内的 Overprint 环境:内容意外对齐我发现问题出在center环境(又名\centering)与环境beamer实现方式之间的交互overprint。它beamer所做的是将环境的所有可能版本收集到包含规定宽度的 s 的 esoverprint中。然后它设置正确的版本(根据覆盖规范),但高度和深度与最大的版本相同。但是,如果环境包含在环境中,则会出现一些奇怪的事情。似乎包含环境的已经考虑了环境,因此由位于线中心的环境组成,并在前面(可能在后面)具有必要的间距。但是当设置 时,它仍然在环境内,因此会拾取一个vboxminipageoverprintcentervboxminipagecenterminipagevboxcenter新的缩进。这没什么关系,除非vbox的宽度被调整到规定的宽度,因此 TeX 会添加更多的水平空间以将背面推vbox入行的中心(或者它是这么认为的)。

鉴于所有这些都是在beameroverprint 环境中进行的,而且我不想乱搞该代码,最简单的解决方案似乎是在环境\centering之前关闭(并且overprint,根据我对原始问题的理解,在内部再次将其重新打开)。但\centering似乎是一个单向陷阱:有\centering,,,但没有。\rightragged\leftragged\backtonormal

以下是一些可供参考的代码:

\documentclass{article}

\newbox\mybox

\begin{document}

\setbox\mybox=\vbox\bgroup\fbox{\begin{minipage}{4cm}hello
world\end{minipage}}\egroup

\centering

\wd\mybox=4cm

\fbox{\box\mybox}

\setbox\mybox=\vbox\bgroup\fbox{\begin{minipage}{4cm}hello
world\end{minipage}}\egroup

\wd\mybox=4cm

\fbox{\box\mybox}

\setbox\mybox=\vbox\bgroup\fbox{\begin{minipage}{4cm}\centering hello
world\end{minipage}}\egroup

\wd\mybox=4cm

\fbox{\box\mybox}

\fbox{\begin{minipage}{4cm}hello world\end{minipage}}

\fbox{\begin{minipage}{4cm}\centering hello world\end{minipage}}


\end{document}

以下是我得到的结论:

盒子和居中对齐

答案1

该软件包ragged2e提供了增强版本\centering\raggedright\raggedleft(您可能会或可能不会喜欢),但最重要的是提供了命令

\justifying

取消上述声明。

答案2

因为你已经在框中了(所以分页不是问题),你不能这样做吗

\begin{minipage}{\textwidth}

将整个宽度框居中是无操作的,并且框内的文本将被对齐。

答案3

\documentclass{article}
\usepackage{lipsum}
\makeatletter
\def\normaljustify{%
  \let\\\@centercr\rightskip\z@skip \leftskip\z@skip%
  \parfillskip=0pt plus 1fil}
\makeatother
\begin{document}

\centering\lipsum[1]
\normaljustify\lipsum[1]

\end{document}

在此处输入图片描述

如果您需要 parindent,那么请在定义中设置它。

相关内容