Как настроить интервал между абзацами в parbox?

Как настроить интервал между абзацами в parbox?

У меня в LyX есть следующее:

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

Я добавил в преамбулу следующую строку:

\global\setlength{\parskip}{20pt}

Таким образом, я ожидаю 20pt пробела между каждой строкой. Однако, в Parbox этого не происходит. Мой вывод:

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

Вопрос: Что мне нужно сделать, чтобы между строками 3 и 4 выше был интервал в 20 пунктов?Я бы хотел, чтобы это было реализовано глобально (т.е. для всех Parbox-ов в моем документе).

Код LaTeX (экспортированный из LyX):

%% LyX 2.2.3 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{calc}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\global\setlength{\parskip}{20pt}

\makeatother

\usepackage{babel}
\begin{document}
1. Hi

2. Hi

\noindent{\fboxrule 3pt\fboxsep 6pt\fbox{\parbox[t]{1\columnwidth - 2\fboxsep - 2\fboxrule}{%
3. Hi

4. Hi%
}}}
\end{document}

решение1

Вы можете добавить в указанные пользователем команды следующее:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\setlength{\parskip}{20pt}
\let\oldparbox\parbox
\renewcommand\parbox[3][t]{\oldparbox[#1]{#2}{\setlength{\parskip}{20pt}#3}}
\makeatother

Редактировать: Следующий «PS» неверен: (См. комментарии Дэвида) PS: Я на самом деле не знал, является ли необязательный параметр по умолчанию в parbox t, но я поискал его и теперь знаю, что это так.Эти предложения между "жирным шрифтом" не являются правдой

Мое оправдание: я просто «погуглил» и первыми результатами были следующие:

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

Я увидел ссылку с заголовком \parboxи просто прочитал из последних двух строк приведенное выше неправильное предложение...

Итак, я усвоил урок...Всегда дважды проверяйте свои источникии не доверяйте только тому, что видите в Google на «расстоянии»

решение2

Я понимаю, что это не прямой ответ на ваш вопрос и, безусловно, некоторый перебор. Однако, если вы хотите рисовать блоки, не сдвигая текст (в вашем примере 3 и 4 смещены немного влево), вы всегда можете использовать TiкZ-накладки.

\documentclass[english]{article}
\usepackage{calc}
\usepackage{tikzpagenodes}
\usetikzlibrary{fit}
\newcommand{\tikznode}[2]{\tikz[remember picture,baseline=(#1.base)]{\node(#1)[inner sep=0pt]{#2};}}
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\global\setlength{\parskip}{20pt}

\makeatother

\begin{document}
1. Hi

2. Hi

3. Hi\tikznode{3}{\strut}

4. Hi\tikznode{4}{\strut}%
\begin{tikzpicture}[overlay,remember picture]
\node [fit=(current page text area.west|-4.south) (current page text
area.east|-3.north),draw,ultra thick,rectangle]{};
\end{tikzpicture}
\end{document}

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

Это, конечно, излишество, если вы просто хотите нарисовать эти коробки, однако если вы хотите сделать что-то более замысловатое, это может быть разумным вариантом.

решение3

Поскольку вы, кажется, хотите, чтобы \parskipв каждом \parbox:

\documentclass{article}

\newlength{\normalparskip}
\setlength{\normalparskip}{20pt}
\AtBeginDocument{\setlength{\parskip}{\normalparskip}\setlength{\parindent}{0pt}}

\makeatletter
\g@addto@macro{\@parboxrestore}{\setlength{\parskip}{\normalparskip}}
\makeatother

\newcommand{\framedparbox}[2][c]{%
  \noindent
  \begingroup
  \setlength{\fboxrule}{3pt}%
  \setlength{\fboxsep}{6pt}%
  \fbox{\parbox[#1]{\dimexpr1\columnwidth - 2\fboxsep - 2\fboxrule}{#2}}%
  \endgroup
}

\begin{document}

1. Hi

2. Hi

\framedparbox[t]{%
3. Hi

4. Hi%
}

\end{document}

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

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