%20um%20%5Cref%7B%7D.png)
Wie kann ich [
und ]
hinzufügen \ref{myref}
, sodass ich etwa Folgendes erhalte:
[1.1]
Das funktioniert nicht:
\documentclass{article}
\usepackage[colorlinks=true,allcolors=blue]{hyperref}
\let\oldref\ref
\renewcommand{\ref}[1]{[\oldref{#1}]}
\begin{document}
\section{Section}
Why cannot include square brackets around cross references? \ref{S}
\subsection{Subsection\label{S}}
This is a subsection.
\end{document}
Antwort: Kommentieren Sie es aus \usepackage[colorlinks=true,allcolors=blue]{hyperref}
, und es funktioniert. Aber ich brauche hyperref
, ich möchte es nicht verwenden amsmath
, und ich ziehe es vor, keine Pakete hinzuzufügen, da sie später dazu neigen, mit anderen Dingen zu kollidieren, wie z. B. der Verwendung von Plastex usw. Was kann ich tun?
Antwort1
Da hyperref
die Dinge nach dem neu definiert werden \begin{document}
, könnten Sie das renewcommand
wie folgt verschieben \AfterBeginDocument
:
Anmerkungen:
- Mit der mit Sternchen gekennzeichneten Variante funktioniert das nicht
\ref*
.
Code:
\documentclass{article}
\usepackage{letltxmacro}
\usepackage[colorlinks=true,allcolors=blue]{hyperref}
\AtBeginDocument{%
\LetLtxMacro\oldref{\ref}%
\DeclareRobustCommand{\ref}[2][]{[\oldref#1{#2}]}%
}
\begin{document}
\section{Section}
Why cannot include square brackets around cross references? \ref{S}
\subsection{Subsection\label{S}}
This is a subsection.
\end{document}
Antwort2
Ich werte meinen Kommentar zu einer Antwort auf, da es eine solche zu sein scheint.
Anstatt zu verwenden \eqref
, fügen Sie Folgendes in Ihre Präambel ein:
\usepackage{fncylab}
\labelformat{equation}{(#1)}
Wenn \ref
es auf die Bezeichnung einer Gleichung angewendet wird, hat es den gleichen Stil wie „ \eqref
und normalerweise auch anders“, und wenn hyperref
es verwendet wird, umfasst der Link die Klammern.
Beachten Sie, dass diese Technik zwar für andere Arten von Etiketten verwendet werden kann, jedoch ein Fehler in vorliegt amsthm
, sodass bei Verwendung \newtheorem
im Formular \newtheorem{<new theorem>}[<old theorem>]{...}
Folgendes <new theorem>
angezeigt wird:buchstäblichder gleiche Zähler wie <old theorem>
, und fncylab
(und tatsächlich cleverref
) werden sie identisch beschriften. Die Problemumgehung besteht darin, dass Sie nach der Definition der Theoreme auch ihre Zähler duplizieren müssen:
\usepackage{aliascnt}
\newaliascnt{<new theorem>}{<old theorem>}
\labelformat{<new theorem>}{...}
Dies funktioniert wie erwartet. Ich mache das mit vielen Zählern in allem, was ich schreibe.