如何将章节编号添加到“反应”编号的前缀?

如何将章节编号添加到“反应”编号的前缀?

我正在使用该chemmacros包、其reactions环境和article文档类:

\documentclass[a4paper, 12pt]{article}
\usepackage{amsmath, amsthm, amssymb, mathtools}
\usepackage{upgreek, chemfig, chemmacros}

\chemsetup{modules = all}
\chemsetup[reactions]{ before-tag = \thesection. } % Adds section number to label
\makeatletter
\@addtoreset{reaction}{section}
\makeatother

\begin{document}

\section{Galvanic cell}
\begin{reactions}
  Zn &-> Zn\pch[2] + 2 e\mch \label{eq:galvZnR} \\
  Cu\pch[2] + 2 e\mch &-> Cu \label{eq:galvCuR}
\end{reactions}

As seen in~\ref{eq:galvZnR} and~\ref{eq:galvCuR}...

\end{document}

现在我想将反应标签编号更改为包含部分编号。从 chemmacros 手册中,我找到了使用 reaction/before-tag 的方法。

但是标签的引用不包括节号。我该如何解决这个问题?我试过,\numberwithin{equation}{section}因为reactions只有一个包装器来对齐(?),但它不起作用。

我的下一个猜测是完全重新定义反应环境,如https://tex.stackexchange.com/a/267804但这似乎是一种相当肮脏的方式。

谢谢您的帮助!

答案1

我建议你更换

\chemsetup[reactions]{ before-tag = \thesection. } % Adds section number to label
\makeatletter
\@addtoreset{reaction}{section}
\makeatother

\numberwithin{reaction}{section}

或者

\counterwithin{reaction}{section}

前者需要加载包(您的文档就是这样做的);即使没有加载,amsmath后者也可以工作。amsmath


完整的 MWE (最小工作示例):

在此处输入图片描述

\documentclass[a4paper, 12pt]{article}
\usepackage{amsthm, amssymb, mathtools, upgreek}
\usepackage{chemfig, chemmacros}
\chemsetup{modules = all}

\numberwithin{reaction}{section}

%% Optional:
\usepackage{cleveref}
\crefname{reaction}{reaction}{reactions}

\begin{document}
\setcounter{section}{1}
\begin{reactions}
  Zn &-> Zn\pch[2] + 2 e\mch \label{eq:galvZnR} \\
  Cu\pch[2] + 2 e\mch &-> Cu \label{eq:galvCuR}
\end{reactions}

As seen in~\ref{eq:galvZnR} and~\ref{eq:galvCuR}, \dots

As seen in \cref{eq:galvZnR,eq:galvCuR}, \dots
\end{document}

相关内容