是否有一个可以轻松缩进的 LaTeX 包?

是否有一个可以轻松缩进的 LaTeX 包?

有时我需要缩进几行并显示数学文本。

例如在逻辑上做一些语义的证明。

下面是我目前如何缩进的一个例子

Suppose $\mathfrak{J} \vDash \text{KB}$

\setlength\parindent{24pt}
Then

\setlength\parindent{48pt}
$\mathfrak{J} \vDash \text{P(a,X)} \to \neg \text{P(b,X)}$

$\mathfrak{J} \vDash \text{P(a,n)}$

Therefore

\setlength\parindent{72pt}
$\mathfrak{J} \vDash \neg \text{P(b,n)} $

\setlength\parindent{24pt}
Also,

\setlength\parindent{48pt}
$\mathfrak{J} \vDash \neg \text{ P(X, n)} \to \neg \text{E(X)}$

非常糟糕,因为每次我需要更改缩进时都必须使用\setlength\parindent{24pt}。这是我需要的结果:

Suppose J ⊨ KB
    Then
        J ⊨ P(a,X) → ¬ P(b,X)
        J ⊨ P(a,n)
        Therefore
            J ⊨ ¬ P(b,n)
    Also,
        J ⊨ ¬ P(X,n) → ¬ E(X)

我希望可以只使用制表符来实现这种缩进,就像在纯文本中一样。这可能吗?

答案1

\documentclass{article}
\usepackage{amsmath,amssymb,listings}
\lstset{columns=fullflexible,keepspaces,mathescape}
\begin{document}
\begin{lstlisting}
Suppose $\mathfrak{J} \vDash \text{KB}$
    Then
        $\mathfrak{J} \vDash \text{P(a,X)} \to \neg \text{P(b,X)}$
        $\mathfrak{J} \vDash \text{P(a,n)}$
        Therefore
            $\mathfrak{J} \vDash \neg \text{P(b,n)} $
    Also,
        $\mathfrak{J} \vDash \neg \text{ P(X, n)} \to \neg \text{E(X)}$
\end{lstlisting}
\end{document}

在此处输入图片描述

答案2

tabbing这是 LaTeX 常常被忽视的环境有意义的罕见情况之一。

以下是您的代码的一个示例:

\begin{tabbing}
\hspace{24pt}\=\hspace{24pt}\=\hspace{24pt}\kill % ❶
Suppose $\mathfrak{J} \vDash \text{KB}$\\
\> Then \\ % ❷
\> \> $\mathfrak{J} \vDash \text{P(a,X)} \to \neg \text{P(b,X)}$\\
\> \> $\mathfrak{J} \vDash \text{P(a,n)}$\\
\> \> Therefore\\
\> \> \> $\mathfrak{J} \vDash \neg \text{P(b,n)} $ \\
\> Also, \\
\> \> $\mathfrak{J} \vDash \neg \text{ P(X, n)} \to \neg \text{E(X)}$
\end{tabbing}

我们首先设置“制表位”❶。每个\=命令²设置一个制表位,并\kill在行末告诉 LaTeX 实际上不要设置指定的文本。

然后我们\>依次使用制表符移动到每个制表位,\\并开始新行❷。

在我删除的章节中,我曾建议tabbing采取以下三种方法,现在这些方法都有更好的解决方案:排版算法、漂亮的打印代码³和多页表,但对于你的情况来说,这非常合适。⁴


  1. tabbing由于非常罕见,我从我的 LaTeX 书中删除了这一章节。
  2. 环境tabbing窃取了一些重音符命令供自己使用。因此,您需要使用\a=\a'\a`获取长音符、尖音符和重音符。
  3. 尽管我不得不说我不喜欢这个listings包的默认样式的美感。
  4. 另一个需要更多工作的选项是使用algorithmicx包创建自定义算法类型,但我怀疑这样做会得不偿失(而且肯定比我愿意为 tex.se 答案做的工作要多)。我注意到它algorithmicx通过巧妙隐藏的嵌套环境来管理其缩进list

相关内容