计算标题中的换行符

计算标题中的换行符

我试图自动调整标题页以获得令人满意的结果,而不受标题大小的影响。这意味着我必须计算参数中的换行符数量。

我的 MWE(不太令人满意,因此非常小)

\documentclass{book}

\makeatletter

\newcommand{\maketitlepage}[1]{% the title page is generated here
  \edef\caesar@titlespace{\the\dimexpr 210pt - 15pt * #1 \relax}% calculate the necessary space
  \cleardoublepage%
  \begingroup%
  {%
  \noindent\LARGE\@author\par
  \vfill%
  \noindent\fontsize{30}{38}\selectfont\@title\par
  \vfill%
  \vspace{\caesar@titlespace}%
  \Large\noindent\publisher\par
  }%
  \endgroup%
  \clearpage%
}

\makeatother

\title{This is\\a title}
\author{John Doe}
\newcommand{\publisher}{Some University}

\begin{document}
\maketitlepage{2} % two lines
\title{This is\\new\\a title}
\maketitlepage{3} % three lines

\end{document}

请注意,我手动计算行数并提供了\maketitlepage额外的参数。我不知道如何自动计算。

答案1

\documentclass{article}

\title{aaa\\b\\bb}

\begin{document}

\makeatletter

\setbox0\vbox{\noindent\fontsize{30}{38}\selectfont\@title\par
\count@\z@
\loop
\unskip\unpenalty\unskip\unpenalty\unskip
\setbox0\lastbox
\ifvoid0
\xdef\numlines{\the\count@}%
\else
\advance\count@\@ne
\repeat}

\show\numlines
\stop

剩下的行数为\numlines

> \numlines=macro:
->3.
l.20 \show\numlines

如果您只想按照标题的高度来判断,请执行以下操作:

\setbox0\vbox{\noindent\fontsize{30}{38}\selectfont\@title}

\ifdim\ht0> 70pt .... \else ... \fi

相关内容