
Estou trabalhando em uma tarefa lógica e devo usar LaTeX. Nas tarefas, muitas vezes preciso ser capaz de escrever algo como o que está abaixo. Eu sei fazer a tabela que ela mostra, mas não as barras, principalmente quando há provas alinhadas. Além disso, o que eu faria se houvesse várias instalações? Obrigado pela ajuda!
Responder1
Dentro do myproof
ambiente fornecido utilize \z
para barra vertical, \z*
para barra vertical com pé horizontal. O argumento opcional para myproof
fornece o recuo para \reason
.
Porque eu redefino \par
o ambiente, vocêdeveuse exatamente uma linha em branco entre as etapas de prova.
\documentclass{article}
\usepackage{tabto}
\def\zz{1.8\dimexpr}
\makeatletter
\newcommand\z{\@ifstar{\zstar}{\znostar}}
\makeatother
\newcommand\zstar{\makebox[1em][l]{%
\smash{\rule[-\dimexpr2pt+\zz\dp\strutbox]{.5pt}{\zz\baselineskip}%
\rlap{\rule[-\zz.9\dp\strutbox]{14pt}{.5pt}}}}\ignorespaces}
\newcommand\znostar{\makebox[1em][l]{%
\smash{\rule[-\dimexpr2pt+\zz\dp\strutbox]{.5pt}{\zz\baselineskip}}}%
\ignorespaces}
\let\svpar\par
\newcounter{proofline}
\newenvironment{myproof}[1][1.8in]{%
\setcounter{proofline}{0}%
\parskip0.8\baselineskip
\def\reason{\tabto{#1}}%
\def\par{\stepcounter{proofline}%
\svpar\noindent\makebox[1.5em][l]{\theproofline}}%
\par\ignorespaces
}
{\let\par\svpar
\par\noindent
\ignorespacesafterend
}
\begin{document}
\noindent Before
\begin{myproof}
\z* $(P\rightarrow(Q\wedge R))$ \reason Premise
\z\z* $P$ \reason Assumption
\z\z $(Q\wedge R)$ \reason 1,2 $\rightarrow$E
\z\z $R$ \reason 3 $\wedge$E
\z $(P\rightarrow R)$ \reason 2-4 $\rightarrow$I
\end{myproof}
After
\noindent parskip was restored
\end{document}