
Estoy trabajando en una tarea de lógica y se supone que debo usar LaTeX. En las tareas, a menudo necesito poder escribir algo como lo que se muestra a continuación. Sé cómo hacer la tabla que se muestra, pero no las barras, especialmente cuando hay pruebas en línea. Además, ¿qué haría si hubiera varios locales? ¡Gracias por tu ayuda!
Respuesta1
Dentro del myproof
entorno previsto, utilice \z
para una barra vertical, \z*
para la barra vertical con el pie horizontal. El argumento opcional myproof
proporciona la sangría para \reason
.
Porque redefino \par
en el ambiente, tudebeutilice exactamente una línea en blanco entre los pasos de prueba.
\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}