浮动在段落中间

浮动在段落中间

如何使用 LaTeX 放置这样的浮点数?

在此处输入图片描述

请注意,它位于句子中间。常规浮动放置规则只能找到放置浮动的正确页面。然后,问题在于它在页面上的哪个位置看起来赏心悦目,而不管段落分隔符恰好位于何处。我认为像这样放置在页面中间通常比放置在页面顶部或底部看起来更好,即使它可能已经过时了。(此示例印刷于 1926 年。)

添加:重点不在于浮动元素应该位于段落的中间。浮动元素位于预先确定的位置在页面上。重点是可以位于段落的中间。

答案1

这会修改 LaTeX 的顶部浮动定位,以便将顶部浮动放在页面的中心,或者至少尽可能靠近中心,如果文本流在中心有一个不可破坏的框或数学显示,则 vsplit 不会在中心准确分割它。它没有经过广泛测试,但它在这个页面上有效:-)。它适用于全部顶部浮动在文档中。

在此处输入图片描述

\documentclass{article}
\usepackage{kantlipsum}


\makeatletter

\def \@cflt{%
    \let \@elt \@comflelt
    \setbox\@tempboxa \vbox{}%
    \@toplist
\setbox\z@\vsplit\@outputbox to 0.5\ht\@outputbox
    \setbox\@outputbox \vbox{%
                             \boxmaxdepth \maxdepth
                             \unvbox\z@
                             \vskip .5\textfloatsep
                             \unvbox\@tempboxa
                             \vskip -\floatsep
                             \topfigrule
                             \vskip .5\textfloatsep
                             \unvbox\@outputbox
                             }%
    \let\@elt\relax
    \xdef\@freelist{\@freelist\@toplist}%
    \global\let\@toplist\@empty
}

\makeatother

\begin{document}
\kant[1-5]

\begin{figure}[t]

\rule{3cm}{6cm}

\caption{a rectangle}
\end{figure}

\kant[2-7]

\end{document}

答案2

还有类似这样的吗?

白兔无论上下文

白兔将始终出现在第 2 页的中央,缩放到 37.5% \textheight,总共占据 40%,包括一点喘息空间。其他页面的格式与往常大致相同:

疯狂中的疯狂

这使用flowfram。这彻底改变了 TeX 输出文本的方式,并且可能不适合您的目的,具体取决于文档的其他内容。

买者自负。

\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage{flowfram, kantlipsum, graphicx}
\newflowframe*[ 1,>2 ]{ \textwidth }{ \textheight }{ 0pt }{ 0pt }[ mainflowframe ]
\newflowframe*[ 2 ]{ \textwidth }{ .3\textheight }{ 0pt }{ .7\textheight }[ secondflow ]
\newstaticframe*[ 2 ]{ \textwidth }{ .4\textheight }{ 0pt }{ .3\textheight }[ myflowfram ]
\newflowframe*[ 2 ]{ \textwidth }{ .3\textheight }{ 0pt }{ 0pt }[ firstflow ]
\setstaticcontents*{ myflowfram }{\centering\includegraphics[height=.375\textheight]{i019}\par}
\setallflowframes{ border=none }
\setallstaticframes{ border=none }

\begin{document}
\kant[1-20]
\end{document}

答案3

使用通用宏集,如果没有标题,则insbox简化为使用命令。此命令可以在段落的任何地方使用:在插入点,宏会用以下文本结束行,插入要插入的内容,并以段落的其余部分结束。\InsertBoxCfirstthen

如果有标题对我来说就更神秘了;使用captionofafter 的\InsertBoxC效果是该行不会结束,并且段落的其余部分将作为插入框后的新段落出现。

但是有一个解决方法:将整个(\includegraphics 和 \captionof)放在表格环境中,\captionof 位于 \parbox 内。因此,这里有一个代码似乎可以生成 OP 所需的内容:

\documentclass[11pt]{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{cleveref,color}
\input{insbox}
\usepackage{cleveref}

\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec varius dapibus metus eget ultrices.
Nulla sagittis mauris rutrum, blandit augue eget, laoreet augue. Phasellus enim odio, sagittis in
mi sed, fringilla mollis odio. Phasellus quis purus ultricies, tempor purus at, tempus quam.%[height = 5cm]
Donec ultricies, ligula ac pretium porttitor, nibh nunc % <- command inserted here
\InsertBoxC{\begin{tabular}{c}\\\includegraphics{AliceSteadman.png}\\ \parbox{\linewidth}{\captionof{figure}{Any description}\label{WhiteRabbit}}\end{tabular}}%
Integer eros nibh, cursus at est sed, volutpat tristique justo. Donec ornare facilisis lorem, id
feugiat elit pellentesque at. Nulla odio mauris, luctus sed faucibus id, dignissim dictum velit.
Morbi vehicula velit at massa tristique rhoncus. Donec id ipsum molestie, pharetra augue sed,
rhoncus ligula. Cf.  \textcolor{red}{\cref{WhiteRabbit}}.

\end{document} 

在此处输入图片描述

答案4

漂浮包将执行此操作。对浮点数使用 [H] 选项。

\documentclass{article}

\usepackage{float}
\usepackage{tikz}

\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec varius dapibus metus eget ultrices. 
Nulla sagittis mauris rutrum, blandit augue eget, laoreet augue. Phasellus enim odio, sagittis in 
mi sed, fringilla mollis odio. Phasellus quis purus ultricies, tempor purus at, tempus quam. 
Donec ultricies, ligula ac pretium porttitor, nibh nunc 
\begin{figure}[H]
    \begin{tikzpicture}
        \draw (0,0) rectangle (10,10);
    \end{tikzpicture}
\end{figure}\noindent
accumsan neque, eget lacinia lacus massa eu leo. 
Integer eros nibh, cursus at est sed, volutpat tristique justo. Donec ornare facilisis lorem, id 
feugiat elit pellentesque at. Nulla odio mauris, luctus sed faucibus id, dignissim dictum velit. 
Morbi vehicula velit at massa tristique rhoncus. Donec id ipsum molestie, pharetra augue sed, 
rhoncus ligula. Proin eros orci, tristique lobortis lobortis non, gravida sit amet magna. 

\end{document}

相关内容