Является ли вообще хорошей идеей вставлять немного клея в \vspace?

Является ли вообще хорошей идеей вставлять немного клея в \vspace?

Я видел много постов, подобных этому.\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}

введите описание изображения здесь

Связанный контент