pbox 中的水平线

pbox 中的水平线

在创建测验时,我需要格式化逻辑论证,我们的教科书将其呈现为前提列表,每行一个,然后是与最宽前提一样宽的水平线,结论在下面。规则周围不应该有太多空间(它不占用自己的一行。)

我使用pbox包(我有 1.2 版)处理了这个问题。我将前提和结论放在一个 pbox 中,\hrule结论前面有一个。由于是\pbox最宽线的宽度,所以\hrule也是正确的宽度。这是一个最小的例子。

\documentclass{minimal}
\usepackage{pbox}
\begin{document}
\pbox{8cm}{
Either you love logic or you hate it. \\
You don't hate logic.
\smallskip\hrule\smallskip
You love logic.}
\end{document}

实际上,这很好用,只是会产生错误:You can't use `\hrule' here except with leaders. 按下 Enter 忽略错误后,输出结果与我期望的完全一样,只是每次编译文档时都必须按 9 次 Enter,这不太好。测验如下所示:

逻辑论证

这引出了一个四重问题:

  1. 错误的原因是什么?它似乎只出现在\pbox? 我很想听听 TeXnical 基础的解释。
  2. 如何在 上画一条水平线\pbox而不出错?我发现\hrulefill可以,但需要一条自己的线。有没有比 更优雅的方法\\[-.7em] \null\hrulefill\\[-.2em],它的缺点是间距繁琐(容易崩溃,并且只能近似于 的间距\smallskip\hrule\smallskip,我喜欢这一点)?
  3. 有没有办法使用\leaders,如错误所建议的那样,来保持产生的相同输出,\hrule但没有错误?
  4. 实现我想要的结果的正确方法是什么?我想最明显的方法是使用tabular环境,但这对我来说在语义上似乎不正确。一连串的语句,下面有一行,不是表格!此外,线条与宽度的匹配程度不如\pbox,不过我相信可以通过摆弄来解决这个问题。

答案1

仅解决第 4 项,隐藏tabular宏内部\logicarg{<premise>}{<conclusion>}可能更有吸引力:

在此处输入图片描述

\documentclass{article}
\newcommand{\logicarg}[2]{% \logicarg{<premise>}{<conclusion>}
  \begin{tabular}[t]{@{}l@{}}
    #1 \\ \hline #2
  \end{tabular}%
}
\begin{document}
\begin{enumerate}
  \item \logicarg
    {If you are eating soup then I am happy. \\ You are eating soup}
    {I am happy}
  \item \logicarg
    {If it is Wednesday then you aren't taking a quiz. \\ It is not Wednesday.}
    {You are taking a quiz.}
  \item \logicarg
    {Either you love logic or you hate it. \\ You don't hate logic.}
    {You love logic.}
\end{enumerate}
\end{document}

答案2

\documentclass{minimal}
\usepackage{pbox}
\begin{document}
\pbox{8cm}{
Either you love logic or you hate it. \\
You don't hate logic.
\smallskip
\endgraf
\ifvmode\nointerlineskip\fi
\leavevmode\leaders\hrule height 1pt \hfill\mbox{}\endgraf
\smallskip
You love logic.}



\end{document}

您不能\vrule在垂直模式下使用,也不能\hrule在水平模式下使用,但它对 pbox 来说有点微妙,因为它首先在 hmode 中测量事物,然后设置一个段落。\pbox主要是表格环境,直接使用它可能会更简单。

相关内容