我正在使用该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}