调整表格环境中的间距以适应三段论式的结构

调整表格环境中的间距以适应三段论式的结构

下列的LaTeX 中的四行三段论,我只是想增加最后一个前提和关于该条的结论之间的空间。

\documentclass{scrarticle}

\newcommand\syllogism[3][]{%
  \begin{center}
  \def\tmp{#1}%
  \ifx\tmp\empty\else(#1)\quad\fi
  \begin{tabular}{@{}l@{}}
    #2\\\hline#3\quad 
  \end{tabular}
  \end{center}
}

\begin{document}

\syllogism[S3]{
  Le soleil s'est levé tous les matins jusqu'à présent.
}{
  Le soleil se lèvera demain.
}

\end{document}

在此处输入图片描述

答案1

您可以使用几种方法增加tabulars 中的空间。

最简单的方法是增加arraystretch大于的倍数1。在之前添加以下宏\begin{center}

\renewcommand\arraystretch{1.35}

以这种方式拉伸表格是不对称的,系数越高,这种对称性就越明显。

您还可以在每个单元格前面添加隐形条

\newcommand\syllogism[3][]{%
  \def\tmp{#1}
  \begin{center}
    \ifx\tmp\empty\else\hspace*{0pt}\llap{(#1)\quad}\fi
    \begin{tabular}{@{}l@{}}
      \rule[-6pt]{0pt}{6pt}#2\\\hline
      \rule[7pt]{0pt}{6pt}#3
    \end{tabular}
  \end{center}}

尝试计算出中的数字\rule[rise]{width}{height}raise意味着根据长度是正数还是负数来向上或向下移动规则。width创建0pt一条不可见的规则。

编辑。有几个替代方案。你可以添加单元格空间包并利用其自定义列类型Sxx可以是lcr),这会在定义的单元格上方和下方添加额外的空间S。另一个包好矩阵具有类似的功能(请参阅文档

下面是完整的示例。注意,我在 中加了一个数字\llap{...},这样可以将数字拉到左侧而不影响表格,并使其保持在中心。在我看来,这在视觉上更具可读性。

\documentclass{scrarticle}
\usepackage{kantlipsum}

\newcommand\syllogism[3][]{%
  \def\tmp{#1}
  \begin{center}
    \ifx\tmp\empty\else\hspace*{0pt}\llap{(#1)\quad}\fi
    \begin{tabular}{@{}l@{}}
      \rule[-6pt]{0pt}{6pt}#2\\\hline
      \rule[7pt]{0pt}{6pt}#3
    \end{tabular}
  \end{center}}


\begin{document}
\kant[1][1]

\syllogism[S3]{%
  Le soleil s'est levé tous les matins depuis jusqu'à présent.
}{%
  Le soleil se lèvera demain.
}

\kant[1][2]

\syllogism{%
  Le soleil s'est levé tous les matins depuis jusqu'à présent.
}{%
  Le soleil se lèvera demain.
}

\kant[1][3]
\end{document}

在此处输入图片描述


编辑2

%%% Requires etoolbox package for \notblank{}{}
\NewDocumentCommand\syllogism{O{}O{3pt}mm}{%
  % #1 - label (optional)
  % #2 - spacing aorund the rule (optional, default 3pt)
  % #3 - content above the rule
  % #4 - content below the rule
  \begin{center}
    \IfValueT{#1}{\notblank{#1}{\hspace*{0pt}\llap{(#1)\quad}}{}}%
    \IfValueTF{#2}{\notblank{#2}{\dimen0=#2}{\dimen0=3pt}}{\dimen0=3pt}
    \begin{tabular}{@{}l@{}}
      #3\\\noalign{\vspace{\dimen0}\hrule height 0.4pt\vspace{\dimen0}}#4
    \end{tabular}
  \end{center}}

现在,宏接受 2 个可选参数和 2 个强制参数,第二个参数控制规则周围的间距。

以下是演示

\documentclass{scrarticle}
\usepackage{etoolbox}
\usepackage{kantlipsum}

\NewDocumentCommand\syllogism{O{}O{3pt}mm}{%
  \begin{center}
    \IfValueT{#1}{\notblank{#1}{\hspace*{0pt}\llap{(#1)\quad}}{}}%
    \IfValueTF{#2}{\notblank{#2}{\dimen0=#2}{\dimen0=3pt}}{\dimen0=3pt}
    \begin{tabular}{@{}l@{}}
      #3\\\noalign{\vspace{\dimen0}\hrule height 0.4pt\vspace{\dimen0}}#4
    \end{tabular}
  \end{center}}


\begin{document}
\kant[1][1]

\syllogism{% All arguments are default
  Le soleil s'est levé tous les matins depuis jusqu'à présent.\\
  Test 1\\
  Test 2
}{%
  Le soleil se lèvera demain.
}

\kant[1][2]

\syllogism[S3][6pt]{% Explicit label and specing 
  Le soleil s'est levé tous les matins depuis jusqu'à présent.\\
  Test 1\\
  Test 2
}{%
  Le soleil se lèvera demain.
}

\kant[1][3]

\syllogism[][12pt]{% No label and explicit spacing
  Le soleil s'est levé tous les matins depuis jusqu'à présent.\\
  Test 1\\
  Test 2\\
  Test 3\\
  Test 4
}{%
  Le soleil se lèvera demain.
}

\kant[1][4]
\end{document}

在此处输入图片描述

相关内容