Я видел много постов, подобных этому.\parskip растягивается больше, чем ожидалоськоторые используют немного клея внутри \vspace
. Интересно, хорошая ли это идея — определить новую \vspace
команду с некоторым клеем, чтобы заменить обычную во всех случаях. Что-то вроде
\newcommand{\vspacewithglue}[3]{\vspace{#1\baselineskip plus #2\baselineskip minus #3\baselineskip }}
Я пытался убедить себя в полезности такой команды для простых случаев, но безуспешно. Например, я использовал
some test line ffppp \vspacewithglue{2}{0}{0}\\
some test line ffppp \vspacewithglue{2}{-1}{1}\\
some test line ffppp \vspacewithglue{2}{1}{1}\\
без какой-либо разницы. Так что я несколько запутался. Возможно, есть некоторые "особые" случаи (как в посте выше), когда действительно нужна такая команда, но обычно в этом нет необходимости. Возможно, лучше использовать хорошо известную команду \\[...ex]
и предоставить TeX возможность разместить клей, если это действительно необходимо.
Я знаю, что этот вопрос немного расплывчатый или, возможно, на него уже есть ответ. Не стесняйтесь редактировать его/предлагать что-то в комментариях.
решение1
Почти никогда не бывает хорошей идеей использовать растягивающийся клей между строками абзаца, как в вашем вопросе. Абзац должен быть установлен как последовательный блок. Вы можете захотеть или не захотеть, чтобы клей между отображаемыми единицами, такими как абзацы, списки и т. д., был растягивающимся в зависимости от дизайна документа. Особенно в двухколоночных режимах растягивающийся клей между абзацами может мешать, поскольку пространство между абзацами в двух колонках будет разным, а базовые линии текста вообще не будут выровнены.
Также, если, как в вопросе, который вы используете \vspace
внутри абзаца, эффект четко определен, но немного странен: пробел не добавляется в месте команды, \vspace
а добавляется позже, после того, как абзац был разбит на строки, после строки, в которой vspace
был добавлен .
some test line ffppp \vspace{10pt}\\
такой же как
some test \vspace{10pt}line ffppp\\
Если, как это часто бывает в классах документов статей, \raggedbottom
действует , то fil
клей добавляется в конец страницы, поскольку он может растягиваться бесконечно, любой добавленный клей с конечным растяжением не будет растягиваться, и будет использоваться только естественный компонент длины.
В некоторых классах документов (включая классы по умолчанию) небольшое расстояние между абзацами может быть полезным для облегчения разрыва страниц (Latex устанавливает значение по умолчанию \parskip
) 0pt plus 1pt
, но обычно это должна быть настройка для всего документа, а не настраиваемая вручную в каждом случае.
Обратите внимание, что если вам действительно нужно растянуть разрыв строки в некоторых особых обстоятельствах, вам не нужна новая команда, вы можете использовать\\[5pt plus 5pt]
решение2
Ваша команда работает так, как и ожидалось, но, как уже написал Дэвид, использовать такое растягиваемое пространство внутри абзаца — довольно плохая идея.
\documentclass[12pt]{book}
\usepackage{lipsum}
\newcommand{\vspacewithglue}[3]{\vspace{#1\baselineskip plus #2\baselineskip minus #3\baselineskip }}
\textheight=10cm
\begin{document}
xxxxx
some test line ffppp \\
some test line ffppp \vspacewithglue{0}{1}{1}\\
some test line ffppp \\
xxxxx
\pagebreak %to force the page to stretch
xxxx
\end{document}