我想nameref
在句子中使用 s,并让结果文本的大小写与句子中的位置相匹配。章节标题自然是标题大小写,但是否有一些命令可以 a) 强制将nameref
s 改为小写(\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 这是一个部分
这是一个部分是一个部分。
这是一个部分是一个部分。这是
一个部分是一个部分。这是一个部分是一个部分。
这是一个部分是一个部分。
(当“这是一个部分”看起来像一个链接时,它会更有意义,因为那时它看起来像““这是一个部分”是一个部分”。只有当我转录它时,我才意识到它看起来有多么愚蠢。)