LaTeX 团队正在努力改进 LaTeX 中大小写转换的实现(\MakeUppercase
以及\MakeLowercase
,并可能整合textcase
包)。为了帮助解决这个问题,我想请求一些“棘手”的大小写转换的例子。
每个答案都应该有
- 简短的“标题”来解释其显示的内容
- 您想要使用的输入
- 你预期的得到结果
- 你实际上得到
并获得“加分”,说明您是如何解决这个问题的。
好的例子可能包括:在文本中使用命令、重音字符、多种语言,ETC。
答案1
存储大小写发生变化的文本
很久以前,我发过一个问题,询问如何存储字符串的大写字母对应部分简而言之,结果
\def\word{abc}
\def\WORD{\MakeUppercase{\word}}
\show\WORD
是\MakeUppercase{abc}
,而我希望ABC
。看似明显的解决方案
\edef\WORD{\MakeUppercase{\word}}
生成错误。@Bruno Le Floch 使用以下方法解决了此问题
\def\word{abc}
\MakeUppercase{\gdef\noexpand\WORD{\word}}
说实话,我还是不明白!
答案2
引文关键词
\MakeUppercase
标准函数将大小写转换应用于引用键
\documentclass{article}
\begin{filecontents*}{\jobname.bib}
@Article{a-key,
author = {Person One},
title = {A demo in lowercase},
journal = {Journal of Irreproducible Results},
year = {2020}
}
\end{filecontents*}
\begin{document}
A demo \cite{a-key}
\MakeUppercase{Some text \cite{a-key}}
\bibliographystyle{unsrt}
\bibliography{\jobname}
\end{document}
其中有一个缺失的引用:
这可以使用textcase
包来处理
\documentclass{article}
\usepackage[overload]{textcase}
\begin{filecontents*}{\jobname.bib}
@Article{a-key,
author = {Person One},
title = {A demo in lowercase},
journal = {Journal of Irreproducible Results},
year = {2020}
}
\end{filecontents*}
\begin{document}
A demo \cite{a-key}
\MakeUppercase{Some text \cite{a-key}}
\bibliographystyle{unsrt}
\bibliography{\jobname}
\end{document}
然后给出
答案3
答案4
扩展大写标题/标题nonchangecase
列表textcase
也许新版本可以将列表\MakeUppercase
扩展到更广泛的命令?\@nonchangecase
textcase
例如,假设模板需要大写的节标题和大写的标题。您希望最终用户能够\eqref
在标题和\footnote
标题中使用,而无需调用\NoCaseChange
。
以下是一个例子:
\documentclass{article}
\usepackage{amsmath}
\usepackage{textcase}
\usepackage{caption}
\DeclareCaptionLabelFormat{uppercase}{\MakeTextUppercase{#1} #2}
\DeclareCaptionFormat{uppercase}{#1 #2 {\MakeTextUppercase #3}}
\captionsetup[figure]{labelformat=uppercase, labelfont=bf, format=uppercase}
\usepackage{titlesec}
\titleformat{\section}{\bfseries\raggedright}{\thesection .}{0.5em}{\MakeTextUppercase}
%% Patch textcase to include \footnote and \eqref.
\makeatletter
\usepackage{etoolbox}
\patchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\footnote}{}{}
\patchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\eqref}{}{}
%% And stop \footnote from causing problems with \sectionmark
\robustify{\footnote}
\patchcmd{\section}{\sectionmark}{\let\footnote\@gobble\sectionmark}{}{}
\makeatother
\begin{document}
\section{Section heading with a footnote\footnote{Footnote that does not need \texttt{\textbackslash NoCaseChange}.}}
Some text (see Fig.~\ref{fig:1}) and an equation
\begin{equation}\label{eqn:tag}
A = B
\end{equation}
\begin{figure}
\caption{Caption with math, eqn.~\eqref{eqn:tag}: $z = (r,\phi)$ \cite{latexdps}\label{fig:1}}
\end{figure}
\begin{thebibliography}{9}
\bibitem{latexdps}
Leslie Lamport. \textit{\LaTeX{}: a document preparation system}. Addison-Wesley, Reading, Massachusetts, 1993.
\end{thebibliography}
\end{document}