为什么表格中的 parskip 为零?

为什么表格中的 parskip 为零?

我想知道为什么\parskip表格环境中是零。

我怎样才能使段落垂直间距相等在表格环境内,就像在tabular?之外一样。

我了解\@parboxrestore\@minipagerestore,但无法找到修复此问题的参考\begin{tabular}

\documentclass{文章}

\usepackage{array}
\setlength{\parindent}{0mm}
\setlength{\parskip}{8pt}

\begin{document}

\textbf{par inside tabular}

\begin{tabular}{|>{\raggedright}p{8cm}|}
\hline 
Lorem ipsum dolor sit amet.
\par{}
Lorem ipsum dolor sit amet.
\par{}
Lorem ipsum dolor sit amet.
\tabularnewline
\hline 
\end{tabular}

\textbf{par outside tabular}

Lorem ipsum dolor sit amet.
\par{}
Lorem ipsum dolor sit amet.
\par{}
Lorem ipsum dolor sit amet.

\end{document}

导致以下结果:

例子

答案1

实际上,minipage\parbox重置\parskip为 0pt,因此您必须在内部重置它。虽然在这种情况下我们知道\parskip=8pt,但一般来说情况并非如此。

\documentclass{article}

\usepackage{array}
\setlength{\parindent}{0mm}
\setlength{\parskip}{8pt}
\newlength{\oldparskip}

\begin{document}

\textbf{par inside tabular}

\oldparskip=\parskip
\begin{tabular}{|>{\raggedright\parskip=\oldparskip}p{8cm}|}
\hline 
Lorem ipsum dolor sit amet.
\par
Lorem ipsum dolor sit amet.
\par
Lorem ipsum dolor sit amet.
\tabularnewline
\hline 
\end{tabular}

\end{document}

重置 parskip

答案2

p与 本质上相同\parbox。在这两种情况下,它们都用于\@arrayparboxrestore规范化几件事。如果您不想将 parskip 和 parindent 规范化,而是保留在主文档中,只需重新定义命令即可不重置它们:

在此处输入图片描述

\documentclass{article}

\usepackage{array}
\setlength{\parindent}{0mm}
\setlength{\parskip}{8pt}

\makeatletter
\def\@arrayparboxrestore{%
  \let\if@nobreak\iffalse
  \let\if@noskipsec\iffalse
  \let\par\@@par
  \let\-\@dischyph
  \let\'\@acci\let\`\@accii\let\=\@acciii
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  \parindent\z@ \parskip\z@skip
  \everypar{}%
  \linewidth\hsize
  \@totalleftmargin\z@
  \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
  \parfillskip\@flushglue \lineskip\normallineskip
  \baselineskip\normalbaselineskip
  \sloppy}
\makeatother
\begin{document}

\textbf{par inside tabular}

\begin{tabular}{|>{\raggedright}p{8cm}|}
\hline 
Lorem ipsum dolor sit amet.
\par
Lorem ipsum dolor sit amet.
\par
Lorem ipsum dolor sit amet.
\tabularnewline
\hline 
\end{tabular}

\textbf{par outside tabular}

Lorem ipsum dolor sit amet.
\par{}
Lorem ipsum dolor sit amet.
\par{}
Lorem ipsum dolor sit amet.

\end{document}

相关内容