Número da seção na parte externa da página

Número da seção na parte externa da página

Seguindo minha pergunta sobre opersonalização do título da seção, gostaria de ter a caixa com o número da seção sempre na parte externa da página (estou usando a opção twoside). Ou seja, para páginas ímpares, a caixa com o número da seção deve ficar à direita, enquanto para páginas pares, a caixa com o número da seção deve ficar à esquerda.

Para páginas pares:

insira a descrição da imagem aqui

e para páginas ímpares:

insira a descrição da imagem aqui

Aí vêm os problemas:

  1. Alterei o código manualmente para obter o número da seção no local desejado para os trechos. Mas, claro, isto não é aceitável para documentos grandes. Alguma ajuda para fazer isso automaticamente?
  2. Para páginas ímpares, não consegui colocar a caixa fora da área de texto, como nas páginas pares.

Mais uma vez, qualquer orientação é bem-vinda.

Aqui está meu MWE:

\documentclass[openright]{scrbook}
\usepackage{geometry}
\geometry{a4paper,twoside, margin=3cm}
\usepackage{blindtext}
\usepackage{xcolor}
\usepackage{xhfill}

\renewcommand*{\sectionformat}{%
    \usekomafont{section}%
    \makebox[0pt][r]{%
    \fboxrule=1.5pt\fcolorbox{blue}{white!0}{\color{black}\thesection}\color{blue}\rule[.6ex]{10pt}{1.5pt}
    }%
}
\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
    \@hangfrom{\hskip #2#3}{\color{blue}#4}$\;$%
    \xrfill[.6ex]{1.5pt}[blue]%
}
\makeatother

\begin{document}
    \chapter{Introduction}
    \section{Section 1}
    \Blindtext[2]
    \section{Section 2}
    \Blindtext[2]
    \section{Section 3}
    \Blindtext[2]
    \section{Section 4}
    \Blindtext[2]
\end{document}

Obrigado!

Responder1

Você poderia usar o comando KOMA-Script \Ifthispageodd:

\documentclass[twoside,open=right]{scrbook}
\usepackage{geometry}
\geometry{margin=3cm}
\usepackage{blindtext}% only for dummy text
\usepackage{xcolor}
\usepackage{xhfill}

\renewcommand*{\sectionformat}{%
  \fboxrule=1.5pt\fcolorbox{.}{white}{\normalcolor\thesection}%
}
\renewcommand*{\subsectionformat}{%
  \fboxrule=1.5pt\fcolorbox{.}{white}{\normalcolor\thesubsection}%
}

\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
  \Ifthispageodd
    {\rule[.6ex]{10pt}{1.5pt}\;#4\;\xrfill[.6ex]{1.5pt}[.]\hspace{-1pt}\usekomafont{#1}\makebox[0pt][l]{\rule[.6ex]{11pt}{1.5pt}#3}}
    {\makebox[0pt][r]{#3\rule[.6ex]{10pt}{1.5pt}\;}#4\;\xrfill[.6ex]{1.5pt}[.]}%
}
\makeatother

\addtokomafont{section}{\color{blue!50!black}}
\addtokomafont{subsection}{\color{green!50!black}}

\begin{document}
\chapter{Introduction}
\section{Section 1}
\subsection{Subsection}
\Blindtext[2]
%\vspace{4\baselineskip}
\section{Section 2}
\Blindtext[1]
%\clearpage
\section{Section 3}
\Blindtext[2]
\section{Section 4, very long section title that requires more than one line}
\Blindtext[2]
\end{document}

insira a descrição da imagem aqui

Aviso: \Ifthispageoddtem limitações. Se o comando for executado em uma página, mas o conteúdo for deslocado para a próxima página, ocorrerá um erro. Remova o comentário da linha \vspace{4\baselineskip}para ver o problema. Portanto, você deve controlar seu documento quando terminar e corrigir o problema usando, por exemplo. \clearpage.


Observação adicional: o código da pergunta usa o mesmo formato para títulos de seção, subseção e subseção. Adicionei uma subseção para mostrar esse comportamento e como usar cores diferentes para títulos de seções e subseções.

informação relacionada