여러 스택인셋 내의 라벨

여러 스택인셋 내의 라벨

내 논문을 위해 나는 정리를 중심으로 부분 프레임을 얻을 수 있도록 \specialbox를 활용하는 명령을 만든 특별한 상자에 정리를 넣고 싶었습니다 . \stackinset디자인에 대한 크레딧은 Steven B. Segletes에게 있습니다. 디자인을 찾았습니다.여기. 아래에는 디자인과 문제(아래 참조)를 설명하는 그림이 첨부되어 있으며 아래에는 MWE가 포함되어 있습니다.

문제: 나는 이 디자인을 \stackinset네 번이나 사용했습니다. 아래 그림에서 볼 수 있듯이 정리 I과 식 (1)에서 정리 XVII와 식 (17)로 이동합니다. 즉 둘 다 16씩 증가했습니다. 이는 \stackinset사용할 때마다 카운터가 불필요하게 증가하기 때문이라고 가정합니다. 그리고 4개의 s의 경우 \stackinset카운터는 2^4 = 16만큼 증가합니다. 분명히 그것은 제가 원한 것이 아닙니다. 이 문제를 해결하는 방법을 아는 사람이 있나요?

여기에 이미지 설명을 입력하세요

\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}

답변1

의 정의 내에서 s를 호출하기 전에 \specialbox인수를 Stored에 저장합니다 . 이제 원래 인수 자체가 아닌 Stored (이름이 지정된 )에 적용됩니다.\parbox\stackinset\parbox\tmpbox

\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}

여기에 이미지 설명을 입력하세요

관련 정보