![重命名方程名称以供参考会导致不必要的水平空格](https://linux22.com/image/413101/%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%B9%E7%A8%8B%E5%90%8D%E7%A7%B0%E4%BB%A5%E4%BE%9B%E5%8F%82%E8%80%83%E4%BC%9A%E5%AF%BC%E8%87%B4%E4%B8%8D%E5%BF%85%E8%A6%81%E7%9A%84%E6%B0%B4%E5%B9%B3%E7%A9%BA%E6%A0%BC.png)
我通过以下页面成功将我的方程式名称从德语单词“Gleichung”重命名为“Formel”: https://golatex.de/formelverzeichnis-erstellen-t6688,start,8.html
此方程名称可供\autoref{}
函数引用。
现在我在引用之后和之前得到了不需要的水平空格,如下所示:
正如您所看到的,在参考文献中的“F”之前和数字之后有一个很大的不需要的水平空格。
我想到了一个不太满意的替代方法:
这里我用来\hyperref[Pythagoras]{Formel~}\ref{Pythagoras}
引用标有“毕达哥拉斯”的方程。此引用不包括方程名称“Formel”和数字之间的空格。但我希望引用在一起但没有水平空格。我该如何实现?
这是我的代码:
\documentclass[a4paper,13pt,twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{hyperref}
\usepackage{amsmath}
\DeclareNewTOC[
indent=0pt,
hang=2em,
type=equation
]{loe}
\AtBeginDocument{
\newcaptionname{german}\equationname{Formel}
\newcaptionname{german}\listequationname{Formelverzeichnis}
}
\newcommand{\formelref}[1]{
\begingroup
\def\equationautorefname{Formel}
\autoref{#1}
\endgroup
}
\begin{document}
\chapter{Pythagoras}
\begin{equation}
a^2 + b^2 = c^2
\label{Pythagoras}
\end{equation}
\newline
Der Satz des Pythagoras wird über die \formelref{Pythagoras} dargestellt. Möchte man nun die Länge von $c$ bestimmen, verwendet man die \formelref{cPythagoras}.
\begin{equation}
c = \sqrt{a^2 + b^2}
\label{cPythagoras}
\end{equation}
\newline
\textbf{Alternative:}
\newline
Der Satz des Pythagoras wird über die \hyperref[Pythagoras]{Formel~}\ref{Pythagoras} dargestellt. Möchte man nun die Länge von $c$ bestimmen, verwendet man die \hyperref[cPythagoras]{Formel~}\ref{cPythagoras}. % Alternative
\end{document}
答案1
作为修改命令的替代方案\autoref
,并提供一个新的专用命令\formelref
,我建议您加载聪明人包装并定义“Formel”为别名表示“Gleichung”。然后,使用可选参数 来\label
通知 cleveref 何时应将方程标记为“Formel”而不是“Gleichung”,并使用 来\cref
交叉引用方程的单个或多个实例。相比之下,\autoref
您一次只能交叉引用一个对象。
\documentclass[a4paper,13pt,twoside,ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{amsmath}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink]{cleveref}
\crefalias{formel}{equation}
\crefname{formel}{Formel}{Formeln}
\creflabelformat{formel}{#2\textup{(#1)}#3}
\begin{document}
\setcounter{chapter}{1}
\begin{equation} a^2+b^2=c^2 \label[formel]{Pythagoras}\end{equation}
\begin{equation} c=\sqrt{a^2+b^2} \label[formel]{cPythagoras} \end{equation}
\begin{equation} 1+1=2 \label{trivial} \end{equation} % observe: NO '[formel]'
\cref{Pythagoras}, \cref{Pythagoras,cPythagoras}; \cref{trivial}
\end{document}
答案2
正如唐纳德指出的那样,我需要%
在行后添加一个,现在它似乎起作用了。
\newcommand{\formelref}[1]{%
\begingroup%
\def\equationautorefname{Formel}%
\autoref{#1}%
\endgroup%
}%
这给了我想要的结果:
完整代码:
\documentclass[a4paper,13pt,twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{hyperref}
\usepackage{amsmath}
\DeclareNewTOC[
indent=0pt,
hang=2em,
type=equation
]{loe}
\AtBeginDocument{
\newcaptionname{german}\equationname{Formel}
\newcaptionname{german}\listequationname{Formelverzeichnis}
}
\newcommand{\formelref}[1]{%
\begingroup%
\def\equationautorefname{Formel}%
\autoref{#1}%
\endgroup%
}%
\begin{document}
\chapter{Pythagoras}
\begin{equation}
a^2 + b^2 = c^2
\label{Pythagoras}
\end{equation}
\newline
Der Satz des Pythagoras wird über die \formelref{Pythagoras} dargestellt. Möchte man nun die Länge von $c$ bestimmen, verwendet man die \formelref{cPythagoras}.
\begin{equation}
c = \sqrt{a^2 + b^2}
\label{cPythagoras}
\end{equation}
\newline
\textbf{Alternative:}
\newline
Der Satz des Pythagoras wird über die \hyperref[Pythagoras]{Formel~}\ref{Pythagoras} dargestellt. Möchte man nun die Länge von $c$ bestimmen, verwendet man die \hyperref[cPythagoras]{Formel~}\ref{cPythagoras}. % Alternative
\end{document}