
plain
문서에는 여러 가지 페이지 스타일이 있으며, 페이지 스타일이 대략 다음 형식의 매크로를 사용하여 나타나는 페이지 스타일인 경우 일부 단락의 모양을 변경하고 싶습니다 .
\def\plainpagestyle{plain}
\def\someparagraph#1{
\ifx???\currentpagestyle???\plainpagestyle
\textbf{#1}
\else
\textit{#1}
\fi
}
그래서 \someparagraph{some text}
"일부 텍스트"는 페이지에서는 굵게 plain
, 다른 곳에서는 이탤릭체로 렌더링됩니다.
part
보다 구체적으로, 페이지 a 또는 a 또는 이와 유사한 다른 내용이 변경되도록 일부 단락의 모양을 변경하고 싶으 chapter
므로 항상 \thispagestyle{plain}
페이지에서 after를 선언합니다.
좋은 방법이 있나요?
답변1
(댓글이 너무 길어요)
무슨 일이 있어도 \someparagraph
의 범위 내에 표시된다는 것이 보장 되지 않는 한 이는 작동하지 않습니다 .\thispagestyle{plain}
일반적으로 TeX은 단락을 조판합니다.~ 전에페이지를 분할할 위치를 결정했기 때문에 사용자를 만났을 때 \someparagraph
여전히 그것이 유효하다고 믿지만 \thispagestyle{plain}
텍스트는 결국 페이지 나누기를 지나서 나타날 수 있습니다.
텍스트 자체가 여러 페이지에 걸쳐 분할될 수 있다는 점은 말할 것도 없고, 이 경우에는 무엇을 하든 잘못된 내용이 됩니다. 좋습니다. 올바른 페이지 참조를 가능하게 하는 비동기 메커니즘인 \label
and 를 기반으로 하는 무언가를 시도해 볼 수 있습니다 .\ref
이제 재미있는 일이 시작됩니다. 텍스트를 볼드체나 이탤릭체로 조판하면 텍스트의 크기가 달라집니다. 볼드체는 페이지 나누기를 유발할 수 있으며 페이지의 텍스트는 일반 스타일이지만 볼드체로 표시됩니다. 따라서 비동기식 메커니즘도 실패할 수 있습니다. 다음 조판에서는 이탤릭체가 표시될 수 있기 때문입니다.~ 아니다페이지 나누기를 트리거합니다. 무한 루프의 위험을 알 수 있습니까?
답을 얻으려면 문제의 범위를 더 잘 구분해야 합니다.
답변2
귀하의 테스트가
발행 되었으며
\thispagestyle
선택한 페이지 스타일은 다음과 같습니다.plain
그러면 다음이 작동합니다
\makeatletter
\def\@SS@plain{plain}
\newcommand\whatisthepagestyle{%
\if@specialpage
\ifx\@specialstyle\@SS@plain
PAGE IS PLAIN
\else
PAGE IS SPECIAL, NOT PLAIN
\fi
\else
PAGE IS NOT SPECIAL
\fi
}
\makeatother
- 이는 다음 여부를 테스트하지 않습니다.현재의페이지 스타일은 일반이지만현재의페이지에 대한 호출이
\thispagestyle{plain}
발행되었습니다. 누군가가\pagestyle{plain}
페이지를 호출한 후\pagestyle{empty}
다음 페이지를 호출하면 할 수 없습니다. - 테스트를 사용하는 텍스트가 중간에 삽입
\thispagestyle{plain}
되어 같은 페이지에 나타나면 이 기능이 이상하게 작동합니다 .\thispagestyle{something-else}
\thispagestyle{plain}
페이지에서 상대적으로 늦게 설정 되면 재미있게 작동합니다 .- 이는 의 정의에 아무런 문제가 없다고 가정합니다
\thispagestyle
. - 이것은 거의 확실히 다음 페이지에 약간 번질 것입니다. 하지만 귀하의 질문과 귀하의 의견에 따르면 귀하는 이에 동의하는 것으로 보입니다.
귀하의 질문은 실제로 에 대한 테스트에 관한 것입니까 \thispagestyle{plain}
? 아니면 실제 문제가 발행 \chapter
된 페이지의 특정 스타일을 변경하는 것이 비밀리에 XY 문제입니까 \part
? 후자라면 더 나은 (IMHO) 방법은 다음과 같습니다.
\AddToHook{shipout/after}{\gdef\someparagraph\textit}
스타일에 연결하고 \chapter
호출 시기를 \part
정의합니다 . 이는 섹션 스타일을 적용한 후 실행할 일부 코드를 지정할 수 있는 을 사용하거나 및 와 같은 것을 사용하여 \gdef\someparagraph\textbf
수행할 수 있습니다 .titlesec
etoolbox
\pretocmd\{\chapter}{\gdef...}