在以下 MWE 中,\makeatletter ... \makeatother
块为文章的标题/作者提供了特定的格式。我希望使用 将该格式与节/小节标题相匹配titlesec
。但是,我找不到让节\小节标题的字体大小与其标题/作者补充的字体大小相匹配的方法。我尝试使用\scalebox
只会导致节/小节标题的大小为正常大小。
\documentclass[10pt]{article}
\usepackage{tikz}
\makeatletter
\def\@maketitle{%
\newpage
\vspace*{-\topskip}
\begingroup\centering
\let \footnote \thanks
\hrule height \z@
{\begin{flushleft} \LARGE \scalebox{3}{\textsc{\textbf{\@title}}} \par \end{flushleft}}%
\vskip -2em
{\color{black} \hfill \large \scalebox{3}{\textsc{\textbf{\@author}}} \par }%
\par\endgroup
\vskip 1.5em
}
\makeatother
\usepackage{titlesec}
\titleformat{\section}[block]{\LARGE \bfseries \scshape}{}{0em}{}
\titleformat{\subsection}[block]{\vskip -2em \hfill \large \scshape \bfseries}{}{0em}{}
\title{Title}
\author{Author}
\begin{document}
\maketitle
\section{Title}
\subsection{Author}
\end{document}
答案1
我完全不确定你想做什么……或者为什么要这样做。
问题很简单:您对 的重新定义\@maketitle
是将\LARGE
和\large
大小文本(即,对于10pt
类选项,17.28pt 和 12pt 文本)放置在 中,\scalebox
并将其放大 3 倍,使其分别变为略小于 52pt 和 36pt 的文本。但您的 titlesec 定义却不是这样(并且由于其工作方式,无法轻易做到这一点)。
正如 Skillmon 在评论中指出的那样,处理缩放字体的合理方法是直接使用字体缩放,并完全摆脱缩放框。
但是,您还没有完全搞定。如果您想要比普通尺寸更大的可缩放字体,则需要一些东西来为您提供现代计算机中合适的大字体。(这可能是代码中 scalebox 的原因,这是一种解决方法,但我猜您继承了它。)这里有很多可能性:lmodern
,fix-cm
或者只是用 XeTeX 或 LuaTeX 进行编译。
事实上,这里还有另一个奇怪之处:你的代码寻找小写字母,但常规的 Computer Modern 没有粗体小写字母。如果你真的想我认为,你需要它们fix-cm
。fontenc
这就是我所演示的。
\RequirePackage{fix-cm}% NB Before documentclass
\documentclass[10pt]{article}
\usepackage[T1]{fontenc}
% ALTERNATIVE POSSIBILITIES TO FIX-CM AND T1: \usepackage{lmodern}
% or use XeTeX or LuaTeX to compile (but bold small caps have
% wrinkles of their own
% \usepackage{tikz} not needed
\newcommand\myLARGE{\fontsize{51.84pt}{64pt}}
\newcommand\mylarge{\fontsize{36pt}{42pt}}
\makeatletter
\def\@maketitle{%
\newpage
\vspace*{-\topskip}
\begingroup\centering
\let \footnote \thanks
\hrule height \z@
{\begin{flushleft} \myLARGE\scshape\bfseries\@title\par \end{flushleft}}%
\vskip -2em
{\hfill \mylarge\scshape\bfseries\@author\par}%
\par\endgroup
\vskip 1.5em
}
\makeatother
\usepackage{titlesec}
\titleformat{\section}[block]{\myLARGE\scshape\bfseries}{}{0em}{}
\titleformat{\subsection}[block]{\vskip -2em \hfill\mylarge\scshape\bfseries}{}{0em}{}
\title{Title}
\author{Author}
\begin{document}
\maketitle
\section{Title}
\subsection{Author}
\end{document}