我想将单张\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 输出:
答案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
启动景观环境的命令,使其自动应用这种样式改变。