Rótulo em vários stackinsets

Rótulo em vários stackinsets

Para minha tese eu queria colocar os teoremas em uma caixa especial, para a qual criei um comando \specialboxque utiliza \stackinset, de forma que eu obtenha um quadro parcial em torno do teorema. Os créditos pelo design vão para Steven B. Segletes, encontrei o designaqui. Abaixo anexei uma imagem que ilustra o design e o problema (veja abaixo) e mais abaixo incluí o MWE.

O problema: para o design usei \stackinsetquatro vezes. Como você pode ver na figura abaixo, passamos do Teorema I e equação (1) para o Teorema XVII e equação (17), ou seja, ambos aumentaram com 16. Presumo que seja porque cada vez que \stackinseté usado, o contador aumenta desnecessariamente, e no caso de quatro \stackinsets, o contador é aumentado em 2 ^ 4 = 16. Obviamente, não era isso que eu queria. Alguém sabe uma maneira de resolver esse problema?

insira a descrição da imagem aqui

\documentclass[10pt,a4paper]{article}

%%% Load packages
\usepackage{stackengine}
\usepackage{amsmath}

%%% Define special box
% \specialbox{<rule width>}{<rule length hori>}{<rule length vert>}{<distance from text>}{<text>}
\newcommand{\specialbox}[5]{%
\stackinset{l}{}{t}{}{ \rule{#2}{#1} }{%
\stackinset{l}{}{t}{}{ \rule{#1}{#3} }{%
\stackinset{r}{-#1-#4}{b}{}{ \rule{#2}{#1} }{%
\stackinset{r}{-#1-#4}{b}{-#1-#4}{ \rule{#1}{#3} }{%
\hspace{\dimexpr #1+#4} \parbox{\dimexpr\textwidth-#4-#4-#1-#1}{
\vspace{\dimexpr #1+#4} #5}}}}}}

%%% Define counter
\newcounter{myThm}
\setcounter{myThm}{0}
\renewcommand*{\themyThm}{\Roman{myThm}}
\newcommand{\mythm}{ \refstepcounter{myThm} {\bfseries Theorem \themyThm.} }

\begin{document}

\specialbox{1.5pt}{35pt}{35pt}{10pt}{%
\mythm \\
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. 
\begin{align}\label{eq}
\dot{x}(t) = f\big( t,x(t) \big)
\end{align}
Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. 
}

\vspace{30pt}

\specialbox{1.5pt}{35pt}{35pt}{10pt}{%
\mythm \\
Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.
\begin{align}\label{eq}
\dot{y}(t) = g\big( t,y(t) \big)
\end{align}
Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.
}

\end{document}

Responder1

Dentro da definição de \specialbox, salve o argumento em um armazenamento \parboxantes de invocar os \stackinsets, que agora são aplicados ao armazenado \parbox(nomeado \tmpbox) em vez do próprio argumento original.

\documentclass[10pt,a4paper]{article}

%%% Load packages
\usepackage{stackengine}
\usepackage{amsmath}

%%% Define special box
% \specialbox{<rule width>}{<rule length hori>}{<rule length vert>}{<distance from text>}{<text>}
\newcommand{\specialbox}[5]{%
\savestack\tmpbox{\parbox{\dimexpr\textwidth-#4-#4-#1-#1}{%
  \vspace{\dimexpr #1+#4} #5}}
\stackinset{l}{}{t}{}{ \rule{#2}{#1} }{%
\stackinset{l}{}{t}{}{ \rule{#1}{#3} }{%
\stackinset{r}{-#1-#4}{b}{}{ \rule{#2}{#1} }{%
\stackinset{r}{-#1-#4}{b}{-#1-#4}{ \rule{#1}{#3} }{%
  \hspace{\dimexpr #1+#4} \tmpbox}}}}}

%%% Define counter
\newcounter{myThm}
\setcounter{myThm}{0}
\renewcommand*{\themyThm}{\Roman{myThm}}
\newcommand{\mythm}{ \refstepcounter{myThm} {\bfseries Theorem \themyThm.} }

\begin{document}

\specialbox{1.5pt}{35pt}{35pt}{10pt}{%
\mythm \\
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. 
\begin{align}\label{eq}
\dot{x}(t) = f\big( t,x(t) \big)
\end{align}
Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. 
}

\vspace{30pt}

\specialbox{1.5pt}{35pt}{35pt}{10pt}{%
\mythm \\
Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus.
\begin{align}\label{eq}
\dot{y}(t) = g\big( t,y(t) \big)
\end{align}
Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.
}

\end{document}

insira a descrição da imagem aqui

informação relacionada