使用小页面时,在段落内正确设置行间间距

使用小页面时,在段落内正确设置行间间距

首先我要说的是,这与之前发布的问题非常相似,如何在使用 minipages (或 \parboxes) 时保持恒定的 baselineskip?,其中埃格尔给出了一个很好的解决方案。但我没有仔细考虑埃格雷格的解决方案是否正确,或者这是一个密切相关但又不同的问题。

另外,我知道我在这里做的事情通常会被人皱眉:即我设置\parskip。但是,我这样做只是为了在视觉上创建我不想要的东西:LaTeX认为我在这里有一个新的段落。 例如,如果我使用在每个段落的开头执行某项任务LaTeX,那么认为有一个新的段落确实会成为一个问题。\everypar

关于我的问题:

我偶尔发现我必须对齐minipages以填充一行,而我不想在行后出现新段落,而是继续当前段落。但不知何故填充的行minipages与下一行之间的行间距太小。

我可以通过\par~在明显有问题的行尾插入 来解决这个minipage问题,或者在行尾使用\\[\baselineskip]。但这样会打开过多的分隔符,并在视觉上产生新段落的感觉。我的愿望不是创建视觉分隔符,而是插入适当的行间间距。如前所述,埃格雷格的解决方案引入了一个新段落,这不是我想要的。当我尝试使用埃格雷格的解决方案没有引入新段落,我收到有关处于水平模式的错误。

我可以在末端加一个支柱minipage来增加深度,但我真的不喜欢目测当我看起来应该能够使行间距完美时。

另外,有时我可以通过设置 来解决这个问题\hangindent。但有时这真的不是一个可行的解决方案。最后,我也希望避免使用包,wrapfig因为在其他情况下我需要类似的更正,但包装不是必需的。

这是我的 MWE:

\documentclass{article}
\usepackage{calc}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{pst-node}
\usepackage[margin=1.25in]{geometry}
%%
\newcommand{\mytext}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.}
\setlength{\parskip}{5ex}
\pagestyle{empty}
\begin{document}
\newsavebox{\righthandmatter}
\begin{lrbox}{\righthandmatter}
     \fbox{\begin{minipage}[t]{0.35\linewidth-2\fboxrule-2\fboxsep-2em}
         \vspace{-\baselineskip}
         \rule[-1cm]{0pt}{2cm} Some image or something
     \end{minipage}}
\end{lrbox}


\noindent%
\textbf{Example 1:} Interlinear spacing is undesirably small---see arrow.\\[0.5\baselineskip]
\noindent%
\begin{minipage}[t]{0.65\linewidth}
    \raisebox{0pt}[0pt][0pt]{\rput(-3ex,-8.25\baselineskip){\color{blue}\rnode{A}{$\longrightarrow$}}}
    \lipsum[2]
\end{minipage}\hspace*{\fill}%
\usebox{\righthandmatter}
\mytext

\noindent%
\textbf{Example 2:} Following \texttt{egreg}'s suggestion: \LaTeX\ thinks there's a new paragraph---see arrow.\\[0.5\baselineskip]
\noindent%
\begin{minipage}[t]{0.65\linewidth}
    \raisebox{0pt}[0pt][0pt]{\rput(-3ex,-8.25\baselineskip){\color{blue}\rnode{B}{$\longrightarrow$}}}
    \raisebox{0pt}[0pt][0pt]{\rput(3.5in,-9.0\baselineskip){\color{blue}\rnode{C}{$\longleftarrow$ \fbox{\footnotesize{}Undesired new paragraph.}}}}
    \lipsum[2]
    %% solution suggested by egreg
    \par\xdef\tpd{\the\prevdepth}
\end{minipage}\hspace*{\fill}%
\usebox{\righthandmatter}

%% enacting egreg's solution (But now I have a new paragraph).
\prevdepth\tpd%
\noindent\mytext

\vspace{1.5ex}
\noindent%
\textbf{Example 3:}  Interlinear spacing is as I want, but lines of the following text terminate too soon.\\[0.5\baselineskip]
\noindent%
\begin{minipage}[t]{0.65\linewidth}
    \raisebox{0pt}[0pt][0pt]{\rput(-3ex,-8.25\baselineskip){\color{blue}\rnode{D}{$\longrightarrow$}}}%
    \raisebox{0pt}[0pt][0pt]{\rput(4.8in,-8.75\baselineskip){\color{blue}\rnode{E}{$\longleftarrow$ \fbox{\footnotesize{}line terminates too soon.}}}}
    \lipsum[2]
    \mytext
\end{minipage}\hspace*{\fill}%
\usebox{\righthandmatter}

\end{document}

这是一张图片:

,

我该如何修正行间距才能达到想要的效果?

为了更好地说明,我提供了另一个例子。右侧内容是不可分割的,例如图形。左侧内容由各种段落、方程式、学生回答的空间以及可能更多的图形组成。

请记住,这是 MWE,因此用于证明格式决策合理性的材料内容会丢失。但是,我通常会在材料资源稀缺且使用多页的奢侈方式不能被滥用的情况下遇到此类格式决策。

在此处输入图片描述

下列的史蒂芬·莱姆克的建议\parshape:我可以写

\documentclass{article}
\usepackage{calc}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{pst-node}
\usepackage[margin=1.25in]{geometry}
%%
\setlength{\parskip}{5ex}
\newlength{\aelinewidth}
\pagestyle{empty}
\begin{document}
\setlength{\aelinewidth}{\linewidth}
\newsavebox{\righthandmatter}
\begin{lrbox}{\righthandmatter}
     \fbox{\begin{minipage}[t]{0.35\linewidth-2\fboxrule-2\fboxsep-2em}
         \vspace{-\baselineskip}
         \rule[-2.5cm]{0pt}{3.5cm}\parbox{\linewidth}{\raggedright{}Some image or something that is unbreakable}
     \end{minipage}}
\end{lrbox}

\noindent%
\begin{minipage}[t]{0.65\linewidth}
    \begin{minipage}[t]{\linewidth}
    \textbf{Question 1:}   
    Nam dui ligula, fringilla a, euismod sodales, sol- licitudin vel,
    wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
    lobortis vitae, ultricies et, tellus. Donec ali- quet, tortor sed\par
    \parshape 6  0pt \linewidth 0pt \linewidth 0pt \linewidth 0pt \linewidth 0pt \linewidth 0pt 6in
    \textbf{Question 2:}   
    Nam dui ligula, fringilla a, euismod sodales, sol- licitudin vel,
    wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
    lobortis vitae, ultricies et, tellus. Donec ali- quet, tortor sed
    accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a
    mi. Morbi ac orci et nisl hendrerit mol- lis. Suspendisse ut
    massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
    penatibus et magnis dis parturient montes, nascetur ridiculus
    mus. Aliquam tincidunt urna. Nulla ullamcor- per vestibulum
    turpis. Pellentesque cursus luctus mauris.  \textbf{Continuation of
    question 2's paragraph} Lorem ipsum dolor sit amet, consectetuer
    adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing
    vitae, felis.  Nam dui ligula, fringilla a, euismod sodales, sol-
    licitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero,
    pretium at, lobortis vitae, ultricies et, tellus. Donec ali- quet,
    tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare
    odio metus a mi. Morbi ac orci et

    \end{minipage}
\end{minipage}\hspace*{\fill}%
\usebox{\righthandmatter}

\end{document}

这给了我一个我想要的相当好的结果:

在此处输入图片描述

\parshape所以现在我的问题是,除了使用更符合埃格尔上述链接上的解决方案是什么?本质上,我觉得我对行间粘连有些不理解。我想我是想澄清一下适用于我上面说明的情况的粘连。

这可能是放置此评论的错误位置:但有趣的是,我必须将我的\parshape段落嵌入另一个段落中minipage,否则包含的宽度minipage将被忽略。这与我之前发布的一个问题有关minipage 比我想要的更宽align。我之前得到的解决方案是,无论方程式是否被标记,它都必须与工作方式有关。删除内部包装minipage,还有另一个示例,即是否minipage忽略宽度。

答案1

我怀疑您过度使用了 minipage,但无论如何,如果您想将段落拼接在一起,您要么需要确保第一段的最后一行齐平结束,要么您需要测量最后一行并将下一段缩进相同的量,以便它们拼接在一起。

这显示了两种方法:

在此处输入图片描述

\documentclass{article}
\usepackage{calc}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{pst-node}
\usepackage[margin=1.25in]{geometry}
%%
\newcommand{\mytext}{ABC Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis.}
\setlength{\parskip}{5ex}
\pagestyle{empty}
\begin{document}
\newsavebox{\righthandmatter}
\begin{lrbox}{\righthandmatter}
     \fbox{\begin{minipage}[t]{0.35\linewidth-2\fboxrule-2\fboxsep-2em}
         \vspace{-\baselineskip}
         \rule[-1cm]{0pt}{2cm} Some image or something
     \end{minipage}}
\end{lrbox}


\noindent%
\textbf{Example 2:} Following \texttt{egreg}'s suggestion: \LaTeX\ thinks there's a new paragraph---see arrow.\\[0.5\baselineskip]
\noindent%
\begin{minipage}[t]{0.65\linewidth}
    {\let\par\relax\lipsum[2]}%dont let lipsum end the para
    %% solution suggested by egreg
        \parfillskip0pt\par\xdef\tpd{\the\prevdepth}
\end{minipage}\hspace*{\fill}%
\usebox{\righthandmatter}

%% enacting egreg's solution (But now I have a new paragraph).
\prevdepth\tpd%
{\parskip0pt\noindent}\mytext


\noindent%
\textbf{Example 2b:} Following \texttt{egreg}'s suggestion: \LaTeX\ thinks there's a new paragraph---see arrow.\\[0.5\baselineskip]
\noindent%
\begin{minipage}[t]{0.65\linewidth}
    {\let\par\relax\lipsum[2]}%dont let lipsum end the para
\abovedisplayskip0pt
\belowdisplayskip0pt
\abovedisplayshortskip0pt
\belowdisplayshortskip0pt
    $$\xdef\pds{\the\predisplaysize}$$%
\end{minipage}\hspace*{\fill}%
\usebox{\righthandmatter}
%% enacting egreg's solution (But now I have a new paragraph).
\par\prevdepth0pt
{\par\kern-2\baselineskip\parskip0pt\noindent}\kern\pds\kern-1em \mytext

\end{document}

答案2

根据@StephanLehmke的评论和这是我的另一个问题的解决方案,看来\parshape\leavevmode\struc\vadjust@DavidCarlisle 的技巧相结合将达到预期的效果。

根本问题是,当我创建考试和测验时,我发现我不能依靠浮动将图像放在合适的位置。此外,我必须节省空间。因此,我经常需要精细地控制内容的位置、形状和结构。这有时意味着我的文本必须环绕图像或其他插入材料,例如答案框或小值表。

我在这里发布的 MWE 有点极端,因为我要环绕两张图片(我认为在实践中我真的不想做这么极端的事情)。另外,我并不是想建议将其作为一种通用的答案。这是针对相对较短的文档(例如测验或讲义)的答案,其中作者(而不是 LaTeX)主要决定分页符。

下面是一个 MWE,展示了如何结合这两种方法:

\documentclass{article}
\usepackage[margin=1.25in]{geometry}
\usepackage{graphicx}
%%--------------------------------------------------------------------------------
\newlength{\imageAwidth} \setlength{\imageAwidth} {\dimexpr 6cm    \relax}   
\newlength{\imageAheight}\setlength{\imageAheight}{\dimexpr 2.5in  \relax}
\newcommand{\myImageA}{\includegraphics[width=\imageAwidth,height=\imageAheight]{example-image-a}}
%%--------------------------------------------------------------------------------
\newlength{\imageBwidth} \setlength{\imageBwidth} {\dimexpr 3cm    \relax}   
\newlength{\imageBheight}\setlength{\imageBheight}{\dimexpr 1.25in \relax}
\newcommand{\myImageB}{\includegraphics[width=\imageBwidth,height=\imageBheight]{example-image-b}}
%%--------------------------------------------------------------------------------
\pagestyle{empty}
\begin{document}
%%\raggedright%%<-- uncommenting this will result in some odd behavior.

%% Placing the image for the right-hand side
{\leavevmode\strut\vadjust{%
    \noindent\hspace*{\linewidth}%
    \makebox[0pt][r]{%
        \raisebox{\dimexpr\dp\strutbox-14.5\baselineskip\relax}[0pt][0pt]
                 {\myImageA}}}%
\ignorespacesafterend}%
%% Placing the image for the left-hand side
{\leavevmode\strut\vadjust{%
    \noindent%
    \makebox[0pt][l]{%
        \raisebox{\dimexpr\dp\strutbox-20\baselineskip\relax}[0pt][0pt]
                 {\myImageB}}}%
\ignorespacesafterend}%
%%--------------------------------------------------------------------------------
%% START: defining paragraph shape to wrap around the two images or inset material
\parshape=22
%% -- adjust for image-a to the right
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
    0pt                                     \dimexpr \linewidth - \imageAwidth - 1em \relax
%% -- squeeze text between the two images
    \dimexpr \imageBwidth + 1em \relax      \dimexpr \linewidth - \imageAwidth - 1em - \imageBwidth - 1em \relax
    \dimexpr \imageBwidth + 1em \relax      \dimexpr \linewidth - \imageAwidth - 1em - \imageBwidth - 1em \relax
    \dimexpr \imageBwidth + 1em \relax      \dimexpr \linewidth - \imageAwidth - 1em - \imageBwidth - 1em \relax
%% -- adjust for image-b to the left
    \dimexpr \imageBwidth + 1em \relax      \dimexpr\linewidth - \imageBwidth - 1em \relax
    \dimexpr \imageBwidth + 1em \relax      \dimexpr\linewidth - \imageBwidth - 1em \relax
    \dimexpr \imageBwidth + 1em \relax      \dimexpr\linewidth - \imageBwidth - 1em \relax
    \dimexpr \imageBwidth + 1em \relax      \dimexpr\linewidth - \imageBwidth - 1em \relax
    \dimexpr \imageBwidth + 1em \relax      \dimexpr\linewidth - \imageBwidth - 1em \relax
%% -- restore usual paragraph shape
    0pt                                     \linewidth
%% END: defining paragraph shape
%%--------------------------------------------------------------------------------
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.  Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis.  Curabitur dictum
gravida mauris.  Nam arcu libero, nonummy eget, consectetuer id, vulputate
a, magna.  Donec vehicula augue eu neque.  Pellentesque habitant morbi
tristique senectus et netus et malesuada A fames ac turpis egestas.  Mauris
ut leo.  Cras viverra metus rhoncus sem.  Nulla et lectus vestibulum urna
fringilla ultrices.  Phasellus eu tellus sit amet tortor gravida placerat.
Integer sapien est, iaculis in, pretium quis, viverra ac, nunc.  Praesent
eget sem vel leo ultrices bibendum.  Aenean faucibus.  Morbi dolor nulla,
malesuada eu, pulvinar at, mollis ac, nulla.  Curabitur auctor semper
nulla.  Donec varius orci eget risus.  Duis nibh mi, congue eu, accumsan
eleifend, sagittis quis, diam.  Duis eget orci sit amet orci dignissim
rutrum.  Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel,
wisi.  Morbi auctor lorem non justo.  Nam lacus libero, pretium at,
lobortis vitae, ultricies et, tellus.  Donec aliquet, tortor sed accumsan
bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi.  Morbi
ac orci et nisl hendrerit mollis.  Suspendisse ut massa.  Cras nec ante.
Pellentesque a nulla.  Cum sociis natoque penatibus et magnis dis
parturient montes, nascetur ridiculus mus.  Aliquam tincidunt urna.  Nulla
ullamcorper vestibulum turpis.  Pellentesque cursus luctus mauris.  Nulla
malesuada porttitor diam.  Donec felis erat, congue non, volutpat at,
tincidunt tristique, libero.  Vivamus viverra fermentum felis.  Donec
nonummy pellentesque ante.  Phasellus adipiscing semper elit.  Proin
fermentum massa ac quam.  Sed diam turpis, molestie vitae, placerat a,
molestie nec, leo.  Maecenas lacinia.  Nam ipsum ligula, eleifend at,
accumsan nec, suscipit a, ipsum.  Morbi blandit ligula feugiat magna.  Nunc
eleifend consequat lorem.  Sed lacinia nulla vitae enim.  Pellentesque
tincidunt purus vel magna.  Integer non enim.  Praesent euismod nunc eu
purus.  Donec bibendum quam in tellus.  Nullam cursus pulvinar lectus.
Donec et mi.  Nam vulputate metus eu enim.  Vestibulum pellentesque felis
eu massa.  Quisque ullamcorper placerat ipsum.  Cras nibh.  Morbi vel justo
vitae lacus tincidunt ultrices.  Lorem ipsum dolor sit amet, consectetuer
adipiscing elit.  In hac habitasse platea dictumst.  Integer tempus
convallis augue.  Etiam facilisis.  Nunc elementum fermentum wisi.  Ciao!

\end{document}

在此处输入图片描述

相关内容