我想让传递给定理环境的可选参数(将参数放在定理编号旁边的括号中 - 通常用于命名定理)具有标题大小写IE非冠词应该大写。我可以使用 titlecaps 和 titlesec 包对章节标题执行此操作(请参阅下面的 MWE),但我不确定如何才能获得此行为,而无需每次在定理参数中手动执行此操作。
我正在使用一个自制的定义环境(通过 amsthm),并且在我的文档开头有很多命名的定义,因此最好不必手动将所有标题大写。
梅威瑟:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{titlesec,titlecaps}
\theoremstyle{definition}
\newtheorem{theorem}{Theorem}[subsection]
\newtheorem{definition}[theorem]{Definition}
\Addlcwords{is with the a an}
\titleformat{\section}[block]{}{\normalfont\Large\bfseries\thesection.\;}{0pt}{\formatsectiontitle}
\newcommand{\formatsectiontitle}[1]{\normalfont\Large\bfseries\titlecap{#1}}
\begin{document}
\section{this is an automatically title capitalized section}
\begin{definition}[I wish this was title capitalized]
Definition.
\end{definition}
\end{document}
答案1
以下重新定义definition
环境并插入\titlecap{...}
提供给它的可选参数:
\documentclass{article}
\usepackage{amsthm}
\usepackage{titlecaps}
\theoremstyle{definition}
\newtheorem{theorem}{Theorem}[subsection]
\newtheorem{definition}[theorem]{Definition}
\Addlcwords{is with the a an}
\begin{document}
Original definition:
\begin{definition}[I wish this was capitalized]
Definition.
\end{definition}
Manual title case for definition:
\begin{definition}[\titlecap{I wish this was capitalized}]
Definition.
\end{definition}
\let\olddefinition\definition
\let\endolddefinition\enddefinition
\RenewDocumentEnvironment{definition}{ o }{%
\IfValueTF{#1}
{\olddefinition[\titlecap{#1}]}
{\olddefinition}%
}{%
\endolddefinition
}
Automated title cap definition:
\begin{definition}[I wish this was capitalized]
Definition.
\end{definition}
\end{document}
这仅适用于环境。如果你没有最新的 LaTeX,definition
则需要这样做。\usepackage{xparse}