자연 추론 LaTeX

자연 추론 LaTeX

이미지와 같은 증명서류를 작성하는 방법은 무엇인가요? 여기에 이미지 설명을 입력하세요

기호는 다 쓸 줄 알지만 직사각형을 만들어 표처럼 쓸 줄은 모르겠어요. 나는 이 웹페이지를 사용했습니다:https://www.tablesgenerator.com/, 하지만 증거를 표시하는 방식이 마음에 들지 않습니다.

답변1

환경 을 사용하는 솔루션은 다음과 같습니다 tabular. 증명 자체의 코드를 단순하게 하기 위해 몇 가지 새로운 명령을 정의했습니다. 첫째, 세 개의 열로 prooftabular시작하는 환경입니다 .tabular

  1. 첫 번째는 증명의 행 번호를 자동으로 표시합니다(아무것도 쓸 필요가 없습니다).
  2. 두 번째는 자동으로 수학 모드에 있으며 증명 단계에 사용되는 것으로 생각됩니다.
  3. 세 번째는 텍스트 모드이며 증명 단계의 정당화에 사용되는 것으로 생각됩니다.

이 환경은 증거를 표시하기 위해 단독으로 사용될 수 있습니다. 그러나 모서리에 기호가 있는 상자를 추가하기 위해 세 가지 다른 명령을 정의했습니다.

  • \hlineproofbox로 상자의 수평선을 추가합니다 \cline{2-2}.
  • \proofboxed상자의 셀 주위에 수직선을 추가합니다. 해당 셀의 내용을 인수로 사용합니다. .\multicolumn{1}{|...|}{...}
  • \corner모서리에 위 첨자로 인수를 추가합니다. 첫 번째 의 내부에 배치되어야 합니다 \proofboxed{}.

이 세 가지 명령은 해당 내용이 테이블에 직접 배치될 수도 있다는 점에서 그다지 유용하지 않습니다. 나는 단지 증명 코드가 이런 식으로 읽기 더 쉽다고 생각했습니다.

어쨌든, 여기에 증명이 포함된 완전한 예가 있습니다.

\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}

글쎄, 그것은 완벽한 대답이 아닙니다. 다른 사람들이 개선할 수 있다고 확신하는 몇 가지 아이디어일 뿐입니다.

관련 정보