自然演繹 LaTeX

自然演繹 LaTeX

画像のような証明を書く方法は何ですか? ここに画像の説明を入力してください

すべての記号の書き方は知っていますが、長方形を作成して表のように書く方法がわかりません。次の Web ページを使用しました:https://www.tablesgenerator.com/しかし、証明の表示方法が気に入りません。

答え1

環境を使用したソリューションを以下に示しますtabular。証明自体のコードを簡潔にするために、いくつかの新しいコマンドを定義しました。まず、 3 つの列でprooftabular始まる環境ですtabular

  1. 最初のものは証明の行番号を自動的に表示します(そこに何かを書く必要はありません)。
  2. 2 番目は自動的に数式モードになり、証明の手順に使用されると考えられます。
  3. 3 番目はテキスト モードであり、証明の手順の正当化に使用されると考えられます。

この環境は、証明を表示するために単独で使用できます。ただし、角にシンボルを含むボックスを追加するために、他の 3 つのコマンドを定義しました。

  • \hlineproofboxボックスの水平線を追加します\cline{2-2}
  • \proofboxedボックス内のセルの周囲に垂直線を追加します。対応するセルの内容を引数として受け取ります。 でのみ垂直線を追加します\multicolumn{1}{|...|}{...}
  • \cornerは、角に上付き文字で引数を追加します。最初の の内側に配置する必要があります\proofboxed{}

これら 3 つのコマンドは、その内容をテーブルに直接配置することもできるという意味では、それほど有用ではありません。単に、この方法の方が証明のコードが読みやすいと思っただけです。

とにかく、ここにあなたの証明を伴う完全な例があります。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\newcounter{proofrow}
\newenvironment{prooftabular}{%
    \let\oldarraystretch\arraystretch
    \renewcommand{\arraystretch}{1.5}
    \begin{tabular}{%
        @{\stepcounter{proofrow}\theproofrow}%
        p{1em}@{}>{\(}l<{\)}>{\quad}l%
    }
    }{%
    \end{tabular}
    \renewcommand{\arraystretch}{\oldarraystretch}
}
\newcommand{\hlineproofbox}{\cline{2-2}}
\newcommand{\proofboxed}[1]{\multicolumn{1}{|>{\(}l<{\)}@{\ }|}{#1}}
\newcommand{\corner}[1]{\qquad {}^{#1}}

\begin{document}
\[
\forall x, P_1^1(x) \implies P_2^1(x), \forall x . P_2^1(x) \implies P_3^1(x) \vdash \forall x . P_1^1(x) \implies P_3^1(x)
\]
\begin{prooftabular}
    & \forall x . P_1^1(x) \implies P_2^1(x)                        & Prem \\
    & \forall x . P_2^1(x) \implies P_3^1(x)                        & Prem \\
    \hlineproofbox
    & \proofboxed{P_1^1(n) \implies P_2^1(n) \corner{/ \forall n}}  & \(E \ \forall 1\) \\
    & \proofboxed{P_2^1(n) \implies P_3^1(n)}                       & \(E \ \forall 2\) \\
    & \proofboxed{P_1^1(n) \implies P_3^1(n)}                       & Teo \(\alpha \implies \beta, \beta \implies \gamma \vdash \alpha \implies \gamma\) \\
    \hlineproofbox
    & \forall x . P_1^1(x) \implies P_3^1(x)                        & \(\forall x . P_1^1(x) \implies P_2^1(x), \forall x . P_2^1(x) \implies P_3^1(x)\)
\end{prooftabular}
\end{document}

答え2

シンボル コマンドの記述に問題がないと仮定すると、empheqパッケージを使用して、次のようにいくつかの方程式 (簡単にするために 2 つ) の周囲にボックスを作成できます。

ここに画像の説明を入力してください

そしてそのコード

\documentclass{article}
\usepackage{amsmath}
\usepackage{empheq}
\begin{document}
%
\begin{empheq}[box=\fbox]{align}
    E=mc^2 \\
    y=ax+b
\end{empheq}
%
\end{document}

もちろん、アスタリスクを追加して{align*}方程式の番号を削除することもできます。

方程式の左側に番号を付けたい場合は、次のようにクラス[leqno]のオプションを使用できます。article

ここに画像の説明を入力してください

いくつかの方程式に番号を付け、他の方程式には番号を付けない場合( を使用\nonumber)、コードは次のようになります。

\documentclass[leqno]{article}
\usepackage{amsmath}
\usepackage{empheq}
\begin{document}
%
\begin{empheq}[box=\fbox]{align}
    E=mc^2 \\
    y=ax+b \\
    y_2 = ax+b \nonumber
\end{empheq}
%
\end{document}

まあ、それは完璧な答えではありません。他の人が改善できると確信しているいくつかのアイデアにすぎません。

関連情報