scalebox 在 titlesec 格式中未按预期运行

scalebox 在 titlesec 格式中未按预期运行

在以下 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 的原因,这是一种解决方法,但我猜您继承了它。)这里有很多可能性:lmodernfix-cm或者只是用 XeTeX 或 LuaTeX 进行编译。

事实上,这里还有另一个奇怪之处:你的代码寻找小写字母,但常规的 Computer Modern 没有粗体小写字母。如果你真的我认为,你需要它们fix-cmfontenc这就是我所演示的。

\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}

显示相同标题和章节标题的图像

相关内容