
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:
e para páginas ímpares:
Aí vêm os problemas:
- 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?
- 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}
Aviso: \Ifthispageodd
tem 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.