¿Cómo puedo utilizar el estilo de página actual como condición para realizar algunas ordenaciones en LaTeX?

¿Cómo puedo utilizar el estilo de página actual como condición para realizar algunas ordenaciones en LaTeX?

Hay varios estilos de página en un documento y quiero cambiar la apariencia de algunos párrafos si el estilo de página en el que aparecen es, por ejemplo, plaincon una macro de aproximadamente la siguiente forma:

\def\plainpagestyle{plain}
\def\someparagraph#1{
    \ifx???\currentpagestyle???\plainpagestyle
        \textbf{#1}
    \else
        \textit{#1}
    \fi
}

por lo que \someparagraph{some text}muestra "algo de texto" en negrita en plainlas páginas y en cursiva en otros lugares.

Más específicamente, quiero que la apariencia de algunos párrafos cambie en las páginas a parto a chapteru otras cosas como esta comienzan, por lo que siempre \thispagestyle{plain}se declara después en la página.

¿Existe una buena manera de hacerlo?

Respuesta1

(Demasiado largo para un comentario)

Esto no funcionará, a menos que \someparagraphse garantice que aparecerá dentro del alcance de \thispagestyle{plain}, pase lo que pase.

Normalmente, TeX compone párrafosanteshaber decidido dónde dividir las páginas y por eso puede suceder que cuando encuentre la suya \someparagraphsiga creyendo que \thispagestyle{plain}está vigente, pero el texto eventualmente aparecerá más allá del salto de página.

Sin mencionar que el texto en sí puede estar dividido en páginas y, en este caso, será incorrecto sin importar lo que hagas. Bien, podríamos probar algo basado en \labely \ref, el mecanismo asincrónico que hace posible tener referencias de páginas correctas.

Ahora comienza la diversión: el tamaño del texto será diferente si lo escribes en negrita o cursiva; La negrita puede provocar un salto de página y terminará con el texto en una página con estilo normal, pero en negrita. Por lo tanto, incluso un mecanismo asíncrono podría fallar, porque en la siguiente composición tipográfica aparecerían cursivas, lo que podríanoactivar el salto de página. ¿Puedes ver el riesgo de un bucle infinito?

Tienes que delimitar mejor tu problema, si esperas obtener una respuesta.

Respuesta2

Si tu prueba es

ha \thispagestylesido emitido Y el estilo de página seleccionado esplain

entonces lo siguiente funcionará

\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
  • Esto no probará si elactualEl estilo de la página es sencillo, pero sólo si en elactual\thispagestyle{plain}página a la que se ha emitido una llamada . Si alguien llama \pagestyle{plain}en la página seguida de \pagestyle{empty}en la página siguiente, no lo puede hacer.
  • Esto se comportará de forma extraña si \thispagestyle{plain}aparece \thispagestyle{something-else}en la misma página con algún texto intermedio que utilice la prueba.
  • Esto se comportará de forma extraña si \thispagestyle{plain}se configura relativamente tarde en la página.
  • Esto supone que nada interfiere con la definición de \thispagestyle.
  • Es casi seguro que esto se extenderá un poco en la página siguiente; pero por tu pregunta y tus comentarios parece que estás de acuerdo con eso.

¿Su pregunta es realmente acerca de las pruebas \thispagestyle{plain}? ¿O es secretamente un problema XY donde el verdadero problema es cambiar ciertos estilos en las páginas donde \chapterse \partpublican? Si es lo último, una mejor manera (en mi humilde opinión) es

\AddToHook{shipout/after}{\gdef\someparagraph\textit}

y para enganchar a su estilo \chaptery \partdefinir \gdef\someparagraph\textbfcuándo se llaman. Esto se puede hacer usando titlesec(que le permite especificar algún código que se ejecutará después de aplicar el estilo de la sección), o usar etoolboxy algo como \pretocmd\{\chapter}{\gdef...}.

información relacionada