
有没有办法强制 amsart 中子部分的标题默认为标题大小写?我试过了,但没有成功:
\documentclass{amsart}
\usepackage[utf8]{inputenc}
\usepackage{etoolbox}
\usepackage{titlecaps}
\makeatletter
\patchcmd{\subsection}{\bfseries}{\titlecap}{}{}
\makeatother
\begin{document}
\maketitle
\section{Section}
\subsection{Subsection with lowercase letters}
\end{document}
答案1
\bfseries
替换为\titlecap
不起作用的原因是它\bfseries
是一个不带参数的声明,而是\titlecap
一个需要参数的宏。
但是,这种方法可能有效,重新定义\@sect
为查找子节(当#2
= 2 时),并在找到后将子节标题替换#8
为\titlecap{#8}
。我还关闭了\bfseries
,#6
因为这似乎是 OP 想要的。
\documentclass{amsart}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{etoolbox}
\usepackage{titlecaps}
\makeatletter
\let\sv@sect\@sect
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum#2=2
\def\next{\sv@sect{#1}{#2}{#3}{#4}{#5}{\normalfont}[#7]{\titlecap{#8}}}%
\else
\def\next{\sv@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{#8}}%
\fi
\next
}
\makeatother
\begin{document}
\section{Section}
\subsection{Subsection with lowercase letters}
\subsection{another test case}
\end{document}
答案2
看看我的代码。它通过使用\uppercase
\documentclass{amsart}
\usepackage[utf8]{inputenc}
\usepackage{etoolbox}
\usepackage{titlecaps}
\makeatletter
\patchcmd{\subsection}{\bfseries}{\titlecap}{}{}
\makeatother
\begin{document}
\maketitle
\section{\uppercase{Section}}
\subsection{\uppercase{Subsection with lowercase letters}}
\end{document}
希望这能有效。