
Para mi tesis quería poner los teoremas en un cuadro especial, para lo cual creé un comando \specialbox
que utiliza \stackinset
, de modo que obtenga un marco parcial alrededor del teorema. Los créditos por su diseño son para Steven B. Segletes, encontré el diseño.aquí. A continuación adjunto una imagen que ilustra el diseño y el problema (ver más abajo) y más abajo incluí el MWE.
El problema: para el diseño lo he usado \stackinset
cuatro veces. Como puede ver en la imagen a continuación, pasamos del Teorema I y la ecuación (1) al Teorema XVII y la ecuación (17), es decir, ambos han aumentado en 16. Supongo que es porque cada vez que \stackinset
se usa, el contador aumenta innecesariamente. y en el caso de cuatro \stackinset
s, el contador aumenta en 2^4 = 16. Obviamente, eso no es lo que quería. ¿Alguien sabe de una manera de resolver este problema?
\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}
Respuesta1
Dentro de la definición de \specialbox
, guarde el argumento en un almacenado \parbox
antes de invocar los \stackinset
s, que ahora se aplican al almacenado \parbox
(llamado \tmpbox
) en lugar del argumento original en sí.
\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}