LaTeX에서 일부 정렬의 조건으로 사용할 현재 페이지 스타일을 어떻게 얻습니까?

LaTeX에서 일부 정렬의 조건으로 사용할 현재 페이지 스타일을 어떻게 얻습니까?

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}텍스트는 결국 페이지 나누기를 지나서 나타날 수 있습니다.

텍스트 자체가 여러 페이지에 걸쳐 분할될 수 있다는 점은 말할 것도 없고, 이 경우에는 무엇을 하든 잘못된 내용이 됩니다. 좋습니다. 올바른 페이지 참조를 가능하게 하는 비동기 메커니즘인 \labeland 를 기반으로 하는 무언가를 시도해 볼 수 있습니다 .\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수행할 수 있습니다 .titlesecetoolbox\pretocmd\{\chapter}{\gdef...}

관련 정보