存储大小写发生变化的文本

存储大小写发生变化的文本

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

数学模式

数学模式材料不应该改变大小写,但是

\documentclass{article}
\begin{document}
\MakeUppercase{Some text $y = mx + c$}
\end{document}

给出

在此处输入图片描述

可以使用以下方法修复textcase

\documentclass{article}
\usepackage[overload]{textcase}
\begin{document}
\MakeUppercase{Some text $y = mx + c$}
\end{document}

在此处输入图片描述

答案4

扩展大写标题/标题nonchangecase列表textcase

也许新版本可以将列表\MakeUppercase扩展到更广泛的命令?\@nonchangecasetextcase

例如,假设模板需要大写的节标题和大写的标题。您希望最终用户能够\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}  

在此处输入图片描述

相关内容