重命名方程名称以供参考会导致不必要的水平空格

重命名方程名称以供参考会导致不必要的水平空格

我通过以下页面成功将我的方程式名称从德语单词“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}

相关内容