
내 질문에 따르면여기내 설정은 현재 다음과 같습니다.
\newenvironment{A}{\label{env:A}}{}
\newenvironment{B}{
%%Pseudocode
\if\thepage!=\pageofref{env:A}
Pagebreak happened!
\fi
%% End Pseudocode
}{}
\begin{A}
Text
\begin{B}
SubText
\end{B}
\end{A}
\begin{A}
Text2
\begin{B}
SubText2
\end{B}
\end{A}
이제 내 문제는 기본적으로 처음 정의된 레이블을 재사용하고 있다는 것입니다. 이전에 생성된 라벨이 아닌 B
현재 환경에서 생성된 라벨을 확인하도록 환경에서 라벨 확인을 설정하는 방법이 있습니까 ?A
답변1
다음은 Heiko Oberdiek의 refcount 패키지를 사용하는 변형입니다.
\documentclass{article}
\usepackage{refcount}
\newcounter{envAcounter}
\newcounter{envBcounter}
\newenvironment{A}{%
\stepcounter{envAcounter}%
\null\label{env:A:start:\arabic{envAcounter}}%
}{\label{env:A:end:\arabic{envAcounter}}}%
\newenvironment{B}{%
\stepcounter{envBcounter}%
\null\label{env:B:start:\arabic{envBcounter}}%
\ifnum\getpagerefnumber{env:A:start:\arabic{envAcounter}}=%
\getpagerefnumber{env:B:start:\arabic{envBcounter}}\relax%
Pagebreak did not take place before starting environment B!%
\else
Pagebreak took place before starting environment B!%
\fi
}{\label{env:B:end:\arabic{envBcounter}}}%
\begin{document}
\begin{A}
Text
\begin{B}
SubText
\end{B}
\end{A}
\begin{A}
Text2
\newpage
\begin{B}
SubText2
\end{B}
\end{A}
\end{document}
다음은 Heiko Oberdiek의 zref 패키지를 abspage-module과 함께 사용하는 변형입니다. 모든 페이지에 아랍어 스타일로 번호가 매겨지지 않은 경우를 대비해 다음과 같습니다.
\documentclass{article}
\usepackage[user,abspage]{zref}
\newcounter{envAcounter}
\newcounter{envBcounter}
\newenvironment{A}{%
\stepcounter{envAcounter}%
\null\zlabel{env:A:start:\arabic{envAcounter}}%
}{\zlabel{env:A:end:\arabic{envAcounter}}}%
\begingroup
\makeatletter
\@firstofone{%
\endgroup
\newenvironment{B}{%
\stepcounter{envBcounter}%
\null\zlabel{env:B:start:\arabic{envBcounter}}%
\ifnum\zref@extract{env:A:start:\arabic{envAcounter}}{abspage}=%
\zref@extract{env:B:start:\arabic{envBcounter}}{abspage}\relax%
Pagebreak did not take place before starting environment B!%
\else
Pagebreak took place before starting environment B!%
\fi
}{\zlabel{env:B:end:\arabic{envBcounter}}}%
}%
\begin{document}
\begin{A}
Text
\begin{B}
SubText
\end{B}
\end{A}
\begin{A}
Text2
\newpage
\begin{B}
SubText2
\end{B}
\end{A}
\end{document}