\usepackage{parskip} 和 \tabular

\usepackage{parskip} 和 \tabular

由于我遇到了换行问题,我应该如何手动换行?, 我用了\usepackage{parskip}

这很有效。

但是,当我有一个表格环境时,环境前后有很多垂直间距。

代码:

\documentclass{article}
\usepackage{tabto}
\usepackage{parskip}

\newcommand{\inlinecode}[1]{\texttt{\small\color{blue}{#1}}}
\newcommand{\n}[0]{\\[3mm]}

\begin{document}

This is a line.

This a new paragraph.

\subsubsection{Closing Windows}
\begin{flushright}
\begin{tabular}{p{10mm}p{40mm}p{80mm}}
1 & dskhkdfahsk & khskdahfkhk\n
2 & two & three\n
\end{tabular}
\end{flushright}

Hello1

Hello2

\end{document}

有什么方法可以让我单独禁用它parskiptabular

答案1

您的示例的主要问题来自表格的宽度。为了说明,请考虑以下flushright环境序列:

\documentclass{article}

\begin{document}
\begin{flushright}
  \rule{2cm}{0.4pt}
\end{flushright}
\begin{flushright}
  \rule{5cm}{0.4pt}
\end{flushright}
\begin{flushright}
  \rule{10cm}{0.4pt}
\end{flushright}
\begin{flushright}
  \rule{15cm}{0.4pt}
\end{flushright}
\begin{flushright}
  \rule{2cm}{0.4pt}
\end{flushright}
\end{document}

生产

规则输出示例

您会发现,行前有比文本宽度更宽的额外垂直空间。

在您的示例中,表格的宽度130mm加上列间距,日志文件告诉您该行超出了60.8858pt。减小最后一列的尺寸,异常间距就会消失:

\documentclass{article}
\usepackage{tabto}
\usepackage{parskip}

\newcommand{\inlinecode}[1]{\texttt{\small\color{blue}{#1}}}
\newcommand{\n}[0]{\\[3mm]}

\begin{document}

This is a line.

This a new paragraph.

\subsubsection{Closing Windows}

\begin{flushright}
  \begin{tabular}{p{10mm}p{40mm}p{30mm}}
    1 & dskhkdfahsk & khskdahfkhk\n
    2 & two & three\n
  \end{tabular}
\end{flushright}

Hello1

Hello2

\end{document}

示例输出

flushright添加了一些额外的垂直间距(\topsep,标准值8pt plus 2pt minus 4t,但0ptparskip包设置为),但这本身并不像您所看到的那么引人注目,除非内容过宽。

flushright因为它被定义为

\trivlist \raggedleft\item\relax

这创造了类似于

\hfill\strut\hskip 0pt

在第一行。然后 LaTeX 会在 处找到一个允许的断点\hskip,并且当行满时,可以选择在那里断点。

答案2

我找到了一个解决方案。

我用的是这个:

\setlength{\parskip}{\dimexpr\baselineskip plus 1pt minus 20pt\relax}

plus在对和值进行大量实验之后minus,我让它工作了。

相关内容