正确使用 namerefs 的大小写

正确使用 namerefs 的大小写

我想nameref在句子中使用 s,并让结果文本的大小写与句子中的位置相匹配。章节标题自然是标题大小写,但是否有一些命令可以 a) 强制将namerefs 改为小写(\lowercase{}不起作用),或 b) 插入初始大小写,即如果第一个单词位于句子开头,则将其大写,其他位置则将其小写?

例子:

\section{Object}
\label{sec:obj}
[definition of an object]
...
\nameref{sec:obj} instance variables are often called simply "\nameref{sec:obj}".

应产生:

Object
[definition of an object]
...
Object instance variables are often called simply "object".

注意句子开头和中间的大小写差异。

答案1

我认为 TeX 很难自动地知道是否\nameref应为标题大小写、小写或初始大小写。但如果准备告诉 TeX,那么就可以这样做。我并不认为这是最优雅的方法,但这是我在类似情况下使用的方法。

\documentclass{article}
\usepackage{hyperref}

\newcommand{\lnameref}[1]{%
\bgroup
\let\nmu\MakeLowercase
\nameref{#1}\egroup}
\newcommand{\fnameref}[1]{%
\bgroup
\def\nmu{\let\nmu\MakeLowercase}%
\nameref{#1}\egroup}


\newcommand{\nmu}{}

\begin{document}

\section{\nmu This \nmu Is a \nmu Section}
\label{sec}

\lnameref{sec} is a section.

\nameref{sec} is a section.

\fnameref{sec} is a section.

\nameref{sec} is a section.

\end{document}

生成:

1 这是一个部分

这是一个部分是一个部分。
这是一个部分是一个部分。这是
一个部分是一个部分。这是一个部分是一个部分。
这是一个部分是一个部分。

(当“这是一个部分”看起来像一个链接时,它会更有意义,因为那时它看起来像““这是一个部分”是一个部分”。只有当我转录它时,我才意识到它看起来有多么愚蠢。)

相关内容