如何在不破坏乳胶中的引用的情况下将标题变为大写?

如何在不破坏乳胶中的引用的情况下将标题变为大写?

我正在尝试将节标题设为大写。我尝试了不同的软件包(titlesecsectsty),但总是得到错误的引用。

\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}

相关内容