Archivos

Archivos

Estoy aprendiendo LaTeX. Estoy usando fancyhdr, en una clase de documento de libro.

Quiero que la regla horizontal se extienda para que ocupe todo el ancho de la página.

captura de pantalla que muestra la regla del encabezado extendida hacia los límites de la página

Lo intenté \fancyheadoffset, pero el contenido del encabezado ya no está alineado con el contenido principal de la página.

todo el encabezado ocupa el ancho de la página, incluido el contenido del encabezado

También intenté usar \makeboxy renovar el \headrulecomando, pero crea un espacio vertical no deseado que no pude controlar (solución basada en una respuesta a estopregunta).

¿Cómo puedo extender solo la regla hrule?

explicación visual del resultado esperado

Archivos

Clase de documento basada en libro.

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{novel}[2024/02/01 Novel]


\LoadClass[12pt,a5paper,twoside,openright]{book}


% UTF-8 support.
\RequirePackage[utf8]{inputenc}


%%%%%%%%%%%
% Layout. %
%%%%%%%%%%%

% Basic layout.
\RequirePackage[
    papersize={152mm,214mm},
    layout=a5paper,
    layouthoffset=2mm,
    layoutvoffset=2mm,
    bindingoffset=8mm,
    left=17mm,
    right=17mm,
    top=17mm,
    bottom=17mm,
    %showframe
]{geometry}


%%%%%%%%%%%%%%%
% Formatting. %
%%%%%%%%%%%%%%%

% Helps build better header and footer; places the page number in the footer.
\RequirePackage{fancyhdr}

% Redefine fancy style.
\fancypagestyle{fancy}{

    \fancyheadoffset[loh,reh]{27mm}
    \fancyheadoffset[roh,leh]{19mm}

    \fancyhf{}
    \fancyhead[EL]{\smaller{\smaller{\textit{\MakeUppercase{\vspace{\baselineskip} \\ \thetitle}}}}}
    \fancyhead[OR]{\smaller{\smaller{\MakeUppercase{\chaptername\ \thechapter\ \\ \leftmark}}}}
    \renewcommand{\headrulewidth}{1pt}
    \fancyfoot[LE,RO]{\smaller{\thepage}}}

% Redefine plain style to match fancy style.
\fancypagestyle{plain}{
    \addtolength{\headwidth}{0cm}
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \fancyfoot[LE,RO]{\smaller{\thepage}}}

% Removes headers on empty pages.
\RequirePackage{emptypage}

% Used for convenient title management.
\RequirePackage{titling}

% Font size adjustment commands.
\RequirePackage{relsize}

% Reduces widows and orphans.
\RequirePackage[all]{nowidow}

% Change the chapter title in the header to only the chapter title.
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}


%%%%%%%%%%%%%%%
% Typography. %
%%%%%%%%%%%%%%%

% Fixes some hyphenation issues (lines longer than body width).
\sloppy

% Micro-typographical adjustments. TODO: reevaluate usefulness
\RequirePackage{microtype}

% Remove space between paragraphs.
\RequirePackage[skip=0pt,indent=15pt]{parskip}

Archivo TeX principal

\documentclass[]{novel}


% This is necessary for proper language-specific hyphenation.
\usepackage[french]{babel}

\usepackage[]{lipsum}


%%%%%%%%%%%%%
% Metadata. %
%%%%%%%%%%%%%

\author{NemuLumeN}
\title{Title of the book}
\date{2022}

\pagestyle{fancy}

\begin{document}

\maketitle

\tableofcontents

\chapter{First chapter title}


\lipsum[1-10]


\chapter{Second chapter}

Oh yeah
\end{document}

Respuesta1

Entonces, siguiendo la sugerencia de @Tom, intenté nuevamente usar la solución makebox de la otra pregunta, apliqué la opción "shift" y funcionó (creo).

\makeatletter
    \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
        \makebox[\linewidth]{\rule[\linewidth]{\dimexpr(\paperwidth + 8mm)}{\headrulewidth}}
        \vskip-315.69928pt}}%
\makeatother

Explicación

Renové \headruleel fancyhdrpaquete encapsulando el original \ruleen el archivo \makebox. No estoy seguro de que la regla se ajuste exactamente al ancho real de la página, pero al menos no hay espacios visibles. (Creo que la regla se extiende más allá de los límites del papel).

Tuve que ajustar el original \vskipdel fancyhdrpaquete porque el registro mostraba este resultado:

Package fancyhdr Warning: \headheight is too small (12.0pt):
(fancyhdr) Make it at least 301.59924pt, for example:
(fancyhdr) \setlength{\headheight}{301.59924pt}.
(fancyhdr) You might also make \topmargin smaller to compensate:
(fancyhdr) \addtolength{\topmargin}{-289.59924pt}.

Cambiar el original \vskipa -315.69928pt "corrige" el error. Sin embargo, no sé por qué ni qué se soluciona exactamente, ya que nada cambia visualmente, ya sea que el valor esté establecido o no.

Resultado

capturar en página par

capturar en página impar

información relacionada