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