如何根据另一段文本的字体大小缩放一个框?

如何根据另一段文本的字体大小缩放一个框?

我正在尝试在文档中创建章节样式memoir

这是当前的代码:

\documentclass[11pt]{memoir}

\usepackage[oldstyle]{libertine}
\usepackage{lipsum}

\newcommand\lefthang[1]{\makebox[0pt][r]{#1\hspace{\marginparsep}}}

% 'mychapter' chapter-style
\makechapterstyle{mychapter}{%
  % Minimize vertical spaces
  \setlength\afterchapskip{50pt}
  \renewcommand\chapterheadstart\relax
  \renewcommand\afterchapternum{}

  % We don't print "Chapter"
  \renewcommand\printchaptername{}

  % Fonts and size
  \renewcommand\chaptitlefont{\normalfont\Huge\scshape}
  \renewcommand\chapnumfont{\chaptitlefont}

  % Chapter number hanging into the paragraph
  \renewcommand\printchapternum{%
    \lefthang{\chapnumfont\thechapter}%
  }

  % Small-caps title (always lowercase)
  \renewcommand\printchaptertitle[1]{\chaptitlefont\MakeTextLowercase{##1}}
  \renewcommand\printchapternonum{\raggedright\chaptitlefont}
}

\chapterstyle{mychapter}


\begin{document}

\chapter{This is quite a long chapter title indeed}
\lipsum[1-4]

\end{document}

结果如下: 结果

现在,我想要获得以下内容:

  • 两行之间的间距应该较小,使得两行的高度总和不超过单行高度的两倍。
  • 数字应为两行高(如果标题是单行也应如此),并且基线与第二行(或如果标题是单行,则为唯一一行)的基线对齐。

请注意,我使用的是 Libertine 和旧式数字,标题文本是小写的,这是故意的,这样“1”就和一行文本一样高。其他数字,如“6”,会上升或下降,大于两行,但这是可以的。我只希望“小”数字(如“1”,既不上升也不下降)和双行一样高。

这是我想要获得的模型:

在此处输入图片描述

主要问题是,无论标题文本是否占用两行,数字都应该更大,所以我无法简单地测量盒子。

我怎样才能达到这样的效果?

答案1

要使用的参数包括定义中的28pt和,以及我用它替换了OP原始定义中的40pt\lefthang\fontsize{28pt}{28pt}\selectfont\Huge

\documentclass[11pt]{memoir}

\usepackage[oldstyle]{libertine}
\usepackage{lipsum}
\usepackage{scalerel}
\newcommand\lefthang[1]{\makebox[0pt][r]{\smash{\raisebox{-28pt}{\scaleto{$#1$}{40pt}}}%
  \hspace{\marginparsep}}}

% 'mychapter' chapter-style
\makechapterstyle{mychapter}{%
  % Minimize vertical spaces
  \setlength\afterchapskip{50pt}
  \renewcommand\chapterheadstart\relax
  \renewcommand\afterchapternum{}

  % We don't print "Chapter"
  \renewcommand\printchaptername{}

  % Fonts and size
  \renewcommand\chaptitlefont{\normalfont\fontsize{28pt}{28pt}\selectfont\scshape}
  \renewcommand\chapnumfont{\chaptitlefont}

  % Chapter number hanging into the paragraph
  \renewcommand\printchapternum{%
    \lefthang{\chapnumfont\thechapter}%
  }

  % Small-caps title (always lowercase)
  \renewcommand\printchaptertitle[1]{\chaptitlefont\MakeTextLowercase{##1}}
  \renewcommand\printchapternonum{\raggedright\chaptitlefont}
}

\chapterstyle{mychapter}


\begin{document}

\chapter{This is quite a long chapter title indeed}
\lipsum[1-4]

\end{document}

在此处输入图片描述

为了回应 OP 的后续问题,这里有一个不同的方法,尽管并不完全令人满意。可以将 的基线\lefthang与章节标题的最后一行对齐。如果章节标题的长度为 1 或 2 行,这将满足 OP 的要求,但如果标题的长度为 3 行或更多,则将继续降低左悬垂章节编号。

\documentclass[11pt]{memoir}

\usepackage[oldstyle]{libertine}
\usepackage{lipsum}
\usepackage{scalerel,tabto}
\newcommand\lefthang[1]{\makebox[0pt][r]{\smash{\scaleto{$#1$}{40pt}}%
  \hspace{\marginparsep}}}

% 'mychapter' chapter-style
\makechapterstyle{mychapter}{%
  % Minimize vertical spaces
  \setlength\afterchapskip{50pt}
  \renewcommand\chapterheadstart\relax
  \renewcommand\afterchapternum{}

  % We don't print "Chapter"
  \renewcommand\printchaptername{}

  % Fonts and size
  \renewcommand\chaptitlefont{\normalfont\fontsize{28pt}{28pt}\selectfont\scshape}
  \renewcommand\chapnumfont{\chaptitlefont}

  % Chapter number hanging into the paragraph
  \renewcommand\printchapternum{}

  % Small-caps title (always lowercase)
  \renewcommand\printchaptertitle[1]{\chaptitlefont\MakeTextLowercase{##1}%
    \tabto*{0pt}\lefthang{\chapnumfont\thechapter}}
  \renewcommand\printchapternonum{\raggedright\chaptitlefont}
}

\chapterstyle{mychapter}


\begin{document}

\chapter{This is quite a long chapter title indeed}
\lipsum[1]

\chapter{This is a short chapter title}
\lipsum[2]

\end{document}

第 1 章标题显示与前面的示例相同,但第 2 章显示如下:

在此处输入图片描述

相关内容