.png)
У меня возникли некоторые проблемы с изменением стиля главы veelo. Из-за моих меньших полей (мне нужен формат бумаги A5) обычный veelo работал неправильно. Поэтому вместо того, чтобы номер главы был на поле, я хочу, чтобы он был выровнен по правому краю текстового блока (см. рисунок). Сейчас я делаю это, жестко кодируя его, но из-за разной ширины различных цифровых символов это не всегда работает для всех глав. Кроме того, черный ящик, который выходит за пределы меток обрезки, выровнен по левому краю номера, из-за чего ящик имеет разные размеры для разных номеров глав.
Мой вопрос: не могли бы вы проверить мой код ниже и сказать, что мне следует изменить, чтобы 1) выровнять число по правому краю текстового блока и 2) сделать черный ящик одинаковым по размеру независимо от ширины числа?
Спасибо!
\makeatletter
\newlength{\numberheight}
\setlength{\numberheight}{\beforechapskip}
\newlength{\barlength}
\makechapterstyle{myveelo}{%
\setlength{\afterchapskip}{40pt}
\renewcommand*{\chapterheadstart}{\vspace*{40pt}}
\renewcommand*{\afterchapternum}{\par\nobreak\vskip 25pt}
\renewcommand*{\chapnamefont}{\normalfont\LARGE\flushright}
\renewcommand*{\chapnumfont}{\normalfont\HUGE}
\renewcommand*{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
\renewcommand*{\printchaptername}{%
\chapnamefont\MakeUppercase{\@chapapp}\hspace*{\midchapskip}}
\renewcommand*{\chapternamenum}{}
\setlength{\beforechapskip}{18mm}
\setlength{\midchapskip}{\paperwidth}
\addtolength{\midchapskip}{-\textwidth}
\addtolength{\midchapskip}{-\spinemargin}
\addtolength{\midchapskip}{-11.5em}
\renewcommand*{\printchapternum}{%
\makebox[0pt][l]{\hspace{-1.5cm}%
\resizebox{!}{\numberheight}{\chapnumfont \thechapter}%
\hspace{1.8em}%
\rule{\midchapskip}{\beforechapskip}%
}}%
\makeoddfoot{plain}{}{}{\thepage}}
\makeatother
решение1
Ваше переопределение \printchapternum
должно быть изменено на что-то вроде
\renewcommand*{\printchapternum}{%
\enspace\resizebox{!}{\numberheight}{\chapnumfont\thechapter}%
\rlap{\hspace{1cm}\rule{\midchapskip}{\beforechapskip}}%
}%
измените символ 1cm
I, используемый для разделения числа и заполненного квадрата, на желаемое значение.
Полный код:
\documentclass{memoir}
\usepackage{graphicx}
\makeatletter
\newlength{\numberheight}
\setlength{\numberheight}{\beforechapskip}
\makechapterstyle{myveelo}{
\setlength{\afterchapskip}{40pt}
\renewcommand*{\chapterheadstart}{\vspace*{40pt}}
\renewcommand*{\afterchapternum}{\par\nobreak\vskip 25pt}
\renewcommand*{\chapnamefont}{\normalfont\LARGE\flushright}
\renewcommand*{\chapnumfont}{\normalfont\HUGE}
\renewcommand*{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
\renewcommand*{\printchaptername}{%
\chapnamefont\MakeUppercase{\@chapapp}}
\renewcommand*{\chapternamenum}{}
\setlength{\beforechapskip}{18mm}
\setlength{\midchapskip}{\paperwidth}
\addtolength{\midchapskip}{-\textwidth}
\addtolength{\midchapskip}{-\spinemargin}
\addtolength{\midchapskip}{-11.5em}
\renewcommand*{\printchapternum}{%
\enspace\resizebox{!}{\numberheight}{\chapnumfont\thechapter}%
\rlap{\hspace{1cm}\rule{\midchapskip}{\beforechapskip}}%
}%
\makeoddfoot{plain}{}{}{\thepage}%
}
\chapterstyle{myveelo}
\makeatother
\begin{document}
\chapter{Test chapter}
\setcounter{chapter}{100}
\chapter{Test chapter}
\end{document}
Изображение результата: