Das möchte ich erreichen:
1.r (Given)
2.(t ∧ r) → s (Given)
3.(p → t) → (q → ¬s) (Given)
4.t ∧ r (Assumption)
Hier ist, was ich bekommen habe:
Hier ist mein Code
\documentclass[11pt]{article}
\usepackage{amsmath,amsthm,amssymb}
\def\imp{\rightarrow}
\begin{document}
\section{formal proof}
\textbf{(a)}
\begin{proof}
\begin{align*}
&1. r& &&\text{(Given)}\\
&2. (t \land r) \imp s& &&\text{(Given)}\\
&3. (p \imp t) \imp (q \imp \neg s)& &&\text{(Given)}\\
&&4. t \land r& &&\text{(Assumption)}
\end{align*}
\end{proof}
\end{document}
Das Problem:
Wie mache ich die Einrückung innerhalb eines formalen Beweises? Es macht mir nichts aus, wenn der Text auf der rechten Seite nicht perfekt ausgerichtet ist, aber ich hätte gerne die richtige Einrückung. Die Einrückung, die durch den obigen Code erzeugt wird, ist zu groß.
Wie Sie wahrscheinlich schon bemerkt haben, bin ich neu bei LaTex. Ich bin für alle Vorschläge dankbar. Es wäre auch schön, wenn es ein Paket für solche Dinge gäbe.
Danke!
Bearbeiten
Ein vollständiger formaler Beweis würde etwa so aussehen:
1.r (Given)
2.(t ∧ r) → s (Given)
3.(p → t) → (q → ¬s) (Given)
4.t ∧ r (Assumption)
5.t (From 4)
6.s (From 2, 4)
7. (p → t) (Assumption)
8. p (From 5, 7)
...
...
...
Antwort1
Sie können so etwas tun
\documentclass{article}
\usepackage{amsmath,amsthm,amssymb}
\def\imp{\rightarrow}
\newenvironment{level}%
{\addtolength{\itemindent}{2em}}%
{\addtolength{\itemindent}{-2em}}
\begin{document}
\section{formal proof}
\textbf{(a)}
\begin{proof}\leavevmode
\begin{enumerate}
\item $r$ \hfill(Given)
\begin{level}
\item $(t \land r) \imp s$ \hfill (Given)
\item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
\begin{level}
\item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
\item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
\end{level}
\item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
\end{level}
\item $t \land r$ \hfill (Assumption)
\end{enumerate}
\end{proof}
\end{document}
In diesem Fall level
vergrößert und verkleinert die Umgebung den Einzug der Elemente in der Liste automatisch. Sie können die Länge ändern, indem Sie die 2em
Größe ändern.
Antwort2
Sie können verwenden enumerate
undenumitem
\documentclass[11pt]{article}
\usepackage{amsmath,amsthm,amssymb}
\def\imp{\rightarrow}
\usepackage{enumitem}
\begin{document}
\section{formal proof}
\textbf{(a)}
\begin{proof}\leavevmode
\begin{enumerate}[ref=\arabic*]
\item $r$ \hfill(Given)
\item $(t \land r) \imp s$ \hfill (Given)\label{enum:second}
\item $(p \imp t) \imp (q \imp \neg s)$ \hfill(Given)
\begin{enumerate}[start=4,label=\arabic*.,ref=\arabic*]
\item $t \land r$ \hfill (Assumption)\label{enum:fourth}
\item $t$ \hfill (From~\ref{enum:fourth})\label{enum:fifth}
\item $s$ \hfill (From~\ref{enum:second},~\ref{enum:fourth})
\begin{enumerate}[start=7,label=\arabic*.,ref=\arabic*]
\item $(p \imp t)$ \hfill (Assumption)\label{enum:seventh}
\item $p$ \hfill (From~\ref{enum:fifth},~\ref{enum:seventh})
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{proof}
\end{document}
\label
Bitte beachten Sie, dass ich als Referenz einen Mechanismus verwendet habe \ref
. Um die Abstände weiter anzupassen, lesen Sie bitte das enumitem
Pakethandbuch (verfügbar unter www.texdoc.net).
Antwort3
Ich denke, es wäre am besten, ein Paket zu verwenden, das für den Satz dieser Art von Beweisen entwickelt wurde. lplfitch
kommt dem wahrscheinlich am nächsten. Es zeichnet Regeln, um die Bereiche zu markieren, aber diese können mithilfe von entfernt werden etoolbox
. Das Folgende patcht den Hauptbeweisbefehl \fitchprf
, sodass die Regeln für die Dauer des Beweises 0pt haben. Die normale Breite der Regeln in Tabellen wird am Ende wiederhergestellt.
lplfitch
bietet auch eine Reihe von Funktionen, die den Satz solcher Beweise erleichtern sollen. Beispielsweise definiert es eine Reihe logischer Symbole mit entsprechendem Abstand. (Weitere Einzelheiten finden Sie im Handbuch.)
\documentclass[11pt]{article}
\usepackage{mathtools,amsthm,amssymb}
\usepackage{lplfitch}
\usepackage{etoolbox}
\newlength\savearrayrulewidth
\setlength\savearrayrulewidth{\arrayrulewidth}
\pretocmd{\fitchprf}{\setlength{\arrayrulewidth}{0pt}}{\typeout{Great!}}{\typeout{Oh, no!}}
\apptocmd{\fitchprf}{\setlength{\arrayrulewidth}{\savearrayrulewidth}}{\typeout{Great!}}{\typeout{Oh, no!}}
\begin{document}
\fitchprf{%
\pline[1]{r}[(Given)]\\
\pline[2]{(t \land r) \lif s}[(Given)]\\
\pline[3]{(p \lif t) \lif (q \lif \lnot s)}[(Given)]
}{%
\subproof{%
\pline[4]{t \land r}[(Assumption)]
}{%
}\\
}
\end{document}
BEARBEITEN
Ob dies nützlich ist oder nicht, hängt auch vom verwendeten System ab, aber das Paket bietet auch Begründungen verschiedener Art. Um den Beweis ein wenig fortzusetzen:
\fitchprf{%
\pline[1]{r}[(Given)]\\
\pline[2]{(t \land r) \lif s}[(Given)]\\
\pline[3]{(p \lif t) \lif (q \lif \lnot s)}[(Given)]
}{%
\subproof{%
\pline[4]{t \land r}[(Assumption)]
}{%
\pline[5]{s}[\life{2}{4}]\\
\pline[6]{t}[\lande{5}]\\
\subproof{%
\pline[7]{p \lif t}[(Assumption)]
}{%
\pline[8]{q \lif \lnot s}[\life{3}{7}]
}
}\\
}
produziert