也许我已经在看它了,但我看不到它,所以如果有人能给我一个简短的提示,我会很高兴。
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\renewcommand{\theequation}{\textit{Eq. \thesection.\arabic{equation}}}
\begin{document}
\section{Vogelpohlsche Volumenformel}
\begin{equation}
n = \frac{10^{-8} F}{6 C \cdot \eta \cdot V}
\label{eq:Example}
\end{equation}
A reference to the equation \ref{eq:Example} is helpful.
\end{document}
与此 MWE 一样,我将出现在右侧的方程的编号重新定义为“Eq. 1.1”,这样效果很好。但是当我在文本中引用方程时,我通常会写出整个单词“equation”并添加引用。这里它还给出了引用的缩写(“对方程 Eq. 1.1 的引用很有帮助。”)。如何在编号中包含“Eq.”而不在引用中包含“Eq.”?
我想避免使用额外的软件包,我也查阅了类似的问题,但没有找到解决方案
感谢您的意见并祝大家度过愉快的一天!
答案1
到目前为止,您所做的就是更改 的定义,\theequation
使其包含Eq.
。这意味着使用\label
和创建的任何引用\ref
也将包含Eq.
,而这并不是您想要的。如中所述使用 amsmath 更改方程编号的外观,您需要修改\tagform@
宏。由于此命令包含一个 at 字符@
,这是 (La)TeX 的特殊字符,因此您需要在 内执行此操作\makeatletter....\makeatother
。以下 的重新定义\tagform@
可实现您想要的效果:
\makeatletter
\def\tagform@#1{\maketag@@@{(\ignorespaces\textit{Eq.~#1}\unskip\@@italiccorr)}}
\makeatother
请注意,我使用了Eq.~#1
而不是Eq. #1
。这只是在 fromEq.
的原始定义上添加了内容,即\tagform@
amsmath.sty
\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
由于现在通过重新定义Eq
添加了 ,因此不再需要。但是,您仍然希望在节内对方程进行编号,因此必须注意这一点。与其重新定义,不如使用 ,因为这会导致每当节计数器增加时,方程计数器都会重置。\tagform@
\theequation
\theequation
\numberwithin{equation}{section}
通过这些更改,您的 MWE 将成为:
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\numberwithin{equation}{section}
\makeatletter
\def\tagform@#1{\maketag@@@{(\ignorespaces\textit{Eq.~#1}\unskip\@@italiccorr)}}
\makeatother
\begin{document}
\section{Vogelpohlsche Volumenformel}
\begin{equation}
n = \frac{10^{-8} F}{6 C \cdot \eta \cdot V}
\label{eq:Example}
\end{equation}
A reference to the equation \ref{eq:Example} is helpful.
\end{document}
输出为:
答案2
这就是你需要的吗?
\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\renewcommand{\theequation}{\thesection.\arabic{equation}}
\makeatletter
\def\tagform@#1{\maketag@@@{(\ignorespaces\textit{Eq.\ #1}\unskip\@@italiccorr)}}
\renewcommand{\eqref}[1]{\textup{{\normalfont(\ref{#1}}\normalfont)}}
\makeatother
\begin{document}
\section{Vogelpohlsche Volumenformel}
\begin{equation}
n = \frac{10^{-8} F}{6 C \cdot \eta \cdot V}
\label{eq:Example}
\end{equation}
A reference to the equation \eqref{eq:Example} is helpful.
\end{document}
答案3
您可以以一种相当通用的方式来做到这一点:
\documentclass{article}
\usepackage{amsmath}
\numberwithin{equation}{section}
\makeatletter
% detach tags and references
\renewcommand{\eqref}[1]{\textup{\eqrefform@{\ref{#1}}}}
\let\eqrefform@\tagform@
\newcommand{\changetag}[1]{%
\renewcommand\tagform@[1]{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}%
}
\makeatother
\begin{document}
\section{Normal}
Here is an equation
\begin{equation}
a=b\label{normal}
\end{equation}
In \eqref{normal} we see something.
\changetag{\textit{Eq.\ #1}}
\section{Changed}
Here is an equation
\begin{equation}
x=y\label{changed}
\end{equation}
In \eqref{changed} we see something.
\end{document}
当然,在普通文档中您会为标签选择单一格式。
参数\changetag
是您想要的格式,其中#1
代表方程编号。
\documentclass{article}
\usepackage{amsmath}
\numberwithin{equation}{section}
\makeatletter
% detach tags and references
\renewcommand{\eqref}[1]{\textup{\eqrefform@{\ref{#1}}}}
\let\eqrefform@\tagform@
\newcommand{\changetag}[1]{%
\renewcommand\tagform@[1]{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}%
}
\makeatother
\changetag{\textit{Eq.\ #1}}
\begin{document}
\section{First}
Here is an equation
\begin{equation}
a=b\label{a}
\end{equation}
In \eqref{a} we see something.
\section{Second}
Here is an equation
\begin{equation}
x=y\label{b}
\end{equation}
In \eqref{b} we see something.
\end{document}