¿Cómo dibujo un margen que también se adjunta a una regla corta?

¿Cómo dibujo un margen que también se adjunta a una regla corta?

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!

Prueba lógica de (P -> (Q ^ R)) ┠ (P -> R)

Respuesta1

Dentro del myproofentorno previsto, utilice \zpara una barra vertical, \z*para la barra vertical con el pie horizontal. El argumento opcional myproofproporciona la sangría para \reason.

Porque redefino \paren 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}

ingrese la descripción de la imagen aquí

información relacionada