我正在尝试将节标题设为大写。我尝试了不同的软件包(titlesec
和sectsty
),但总是得到错误的引用。
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\makeatletter
\usepackage{titlesec}
\titleformat{\section}%
{\uppercase}%
{\thesection.\enskip}%
{0pt}%
{}
\makeatother
\begin{document}
\begin{equation}
x\label{eq:x}
\end{equation}
\section{\ref{eq:x}}
\end{document}
答案1
\MakeUppercase
如果你正确使用而不是 则没有问题\uppercase
。还请注意位置。
\documentclass{article}
\usepackage{titlesec}
\titleformat{\section}
{}
{\thesection.\enskip}
{0pt}
{\MakeUppercase}
\begin{document}
\begin{equation}
x\label{eq:x}
\end{equation}
\section{A reference to \ref{eq:x}}
\end{document}
当babel
使用 时,这可能会或可能不会起作用,具体取决于 的定义\sectionmark
。但是,加载textcase
和使用\MakeTextUppercase
应该可以解决问题。
\documentclass[english]{article}
\usepackage{babel}
\usepackage{titlesec}
\usepackage{textcase}
\titleformat{\section}
{}
{\thesection.\enskip}
{0pt}
{\MakeTextUppercase}
\begin{document}
\begin{equation}
x\label{eq:x}
\end{equation}
\section{A reference to \ref{eq:x}}
\end{document}
如果您还想对标题应用格式,请采用以下解决方法:
\documentclass[english]{article}
\usepackage{babel}
\usepackage{titlesec}
\usepackage{textcase}
\DeclareRobustCommand{\sref}[1]{%
\lowercase{\ref{#1}}
}
\titleformat{\section}
{}
{\thesection.\enskip}
{0pt}
{\MakeTextUppercase}
\begin{document}
\begin{equation}
x\label{eq:x}
\end{equation}
\section{A reference to \emph{\sref{eq:x}}}
\end{document}