更改一个部分标题的字体大小

更改一个部分标题的字体大小

我想将单张\subsection打印得大一些,但字体不变。这是横向页面,将小节标题放在整页图表之前,并且需要将其包含在目录中。

我尝试使用

\huge{\subsection{Big subsection heading}}

但它根本不修改文本。

理想情况下,解决方案将使用现有字体(而不是硬编码与本例中的字体匹配的字体选择)。

因此,我尝试使用(自定义)创建目录条目\nosubsection,然后使用\thesubsection标题创建“假”子部分标题。

梅威瑟:

\documentclass[12pt, a4paper]{article}

\usepackage{lipsum}

% don't recall source
\newcommand{\nosubsection}[1]{%
  \refstepcounter{subsection}%
  \addcontentsline{toc}{subsection}{\protect\numberline{\thesubsection}#1}%
  \markright{#1}}

% http://tex.stackexchange.com/questions/73158/how-to-get-the-size-of-the-section-header
\newcommand{\getsubsectionfont}{\setbox0=\vbox{\subsection*{a\xdef\TheSubsectionFont{\the\font}}}}
\AtBeginDocument{\getsubsectionfont}


\begin{document}

\section{Section heading}
\subsection{Normal subsection heading}

% Note the separate \centering
\nosubsection{Big subsection heading}
\centering{\TheSubsectionFont\huge{\thesubsection{} Big subsection heading}}
\label{sec:big}

% Don't know why this is centred too, but it doesn't matter
\lipsum[66]

\end{document}

MWE 输出:

MWE 输出

答案1

一个选项是使用titlesec定义两个命令以在所需格式之间随意切换:;\largesubsection根据需要随时使用任意次数,切换到较大的格式;\stdsection切换回常规格式。

在此处输入图片描述

代码:

\documentclass[12pt, a4paper]{article}
\usepackage{titlesec}
\usepackage{lipsum}

\newcommand\stdsubsection{%
  \titleformat{\subsection}
    {\normalfont\large\bfseries}{\thesubsection}{1em}{}
}
\newcommand\largesubsection{%
  \titleformat{\subsection}
    {\normalfont\huge\bfseries\filcenter}{\thesubsection}{1em}{}
}

\begin{document}

\section{Section heading}
\subsection{Normal subsection heading}

\largesubsection
\subsection{Big subsection heading}
\lipsum[66]

\stdsubsection
\subsection{Another normal subsection heading}

\end{document}

有了\titleformat*,代码就简单一些了:

\documentclass[12pt, a4paper]{article}
\usepackage{titlesec}
\usepackage{lipsum}

\newcommand\stdsubsection{%
  \titleformat*{\subsection}
    {\normalfont\large\bfseries}
}
\newcommand\largesubsection{%
  \titleformat*{\subsection}{\normalfont\huge\bfseries\filcenter}
}

\begin{document}

\section{Section heading}
\subsection{Normal subsection heading}

\largesubsection
\subsection{Big subsection heading}
\lipsum[66]

\stdsubsection
\subsection{Another normal subsection heading}

\end{document}

答案2

Gonzalo Medina 的回答是一个很好的开始,但我认为可以通过两三个方面进行改进。我们并不真正想要两个\titleformat需要保持同步的定义——这对于 MWE 来说很好,但在不断发展的真实世界文档中则不然,因为其中的定义可能会更复杂。在我看来,如果我们可以确定范围以避免必须将样式重置为其原始值,或者如果我们可以自动选择样式,那就更好了。这个 MWE 这样做:

\documentclass[12pt, a4paper]{article}

\usepackage{titlesec}
\newcommand\ssectstyle{\large}
\titleformat*{\subsection}{\normalfont\bfseries\ssectstyle}

\usepackage{pdflscape}
\usepackage{etoolbox}
\pretocmd\landscape{\renewcommand\ssectstyle{\huge\filcenter}}{}{}

\begin{document}
\section{Section heading}
\subsection{Normal subsection heading}

\begin{landscape}
\subsection{Big subsection heading}
\end{landscape}

\subsection{Another normal subsection heading}
\end{document}

这会将标题样式中变化的部分提取到新\ssectstyle命令中,因此只需要重新定义它。由于 TeX 宏定义是有范围的,因此如果我们这样做

{\renewcommand\ssectstyle{\huge\filcenter} \subsection{Huge}}

... 然后定义在该块的末尾返回其原始值。如果我们在环境中执行此操作,情况也是如此,例如:

\begin{landscape}
\renewcommand\ssectstyle{\huge\filcenter}
\subsection{Big subsection heading}
\end{landscape}

该解决方案更进一步,通过修补\landscape启动景观环境的命令,使其自动应用这种样式改变。

相关内容