10 如何处理subequations环境的序号引用问题?

发布于 2024-08-15 23:13:02

在以下的排版中,有以下两处希望改进:

  • 希望在\thesection计数器前加入Section Sign\S{},但在公式编号中不要加入该符号.此前听说过counterwithout命令,但尝试未能解决(希望编译结果中的公式不带S{}符号).
  • 对于amsmath宏包提供的subequations环境排版形如(2.3a)的命令时,希望使用\eqref命令引用带后缀的形如(2.3a)形式的序号,而不是公式(2.3)的序号。在amsmath宏包中未找到有关介绍。

以下是MWE和部分希望达到的修改效果图

\documentclass[12pt]{ctexart}
\usepackage[margin=2cm]{geometry}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{hyperref}
\renewcommand{\thesection}{\S{}\arabic{section}}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}
\numberwithin{equation}{section}
\begin{document}
    \section{The First Section}
    这是一段乱糟糟的话\ref{eq:abc}.其中引用了一个公式.根据\eqref{eq:abc},我们可以知道这个世界的秘密是这样的:\lipsum[8]
    \subsection{A subsection}
        \begin{equation}
            a^2+b^2=c^2
        \end{equation}
        \lipsum[1]
        \begin{equation}
            3^2+4^2=5^2
        \end{equation}
        \subsection{A subsection}
        \begin{equation}
            a^2+b^2=c^2
        \end{equation}
        \begin{equation}
            3^2+4^2=5^2
        \end{equation}
        \subsection{A subsection}
        \begin{equation}
            a^2+b^2=c^2
        \end{equation}
    \section{The Second Section}
    \begin{equation}
        a^2+b^2=c^2
    \end{equation}
    \begin{equation}
        3^2+4^2=5^2
    \end{equation}
    \lipsum[2]
    \subsection{A subsection}
    \begin{equation}
        a^2+b^2=c^2
    \end{equation}
    \begin{equation}
        3^2+4^2=5^2
    \end{equation}
    \subsection{A subsection}
    \begin{equation}
        a^2+b^2=c^2
        \label{eq:abc}
    \end{equation}
    \lipsum[3]
        \begin{equation}
            \sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
        \end{equation}
    \section{The Third Section}
    \begin{equation}
        \sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
    \end{equation}
    下面尝试使用\verb|amsmath|宏包提供的包装公式环境\verb|subequations|实现.
    \begin{subequations}
        \begin{align}
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^1}{1111} \\
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^2}{2222} \\
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^3}{3333} \\
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^4}{4444}
        \end{align}
        \label{eq:mult-lines}
    \end{subequations}

    本句交叉引用整个公式.生活就像海洋,只有意志坚强的人才能到达彼岸\eqref{eq:mult-lines}.

    本句交叉引用子公式(what I mean is just like 3.2c).生活就像海洋,只有意志坚强的人才能到达彼岸.

    \lipsum[4]

    \begin{subequations}
    \renewcommand{\theequation}{\theparentequation-\roman{equation}-\alph{equation}-以及公式\textbf{编号}\chinese{equation}}
        \begin{align}
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^1}{1111} \\
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^2}{2222} \\
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^3}{3333} \\
        \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^4}{4444}
        \end{align}
        \label{eq:mult-lines-pro}
    \end{subequations}

    \lipsum[9]

    \begin{equation}
        \sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
    \end{equation}

\end{document}

image.png

也许这个MWE没有那么M,抱歉

查看更多

关注者
0
被浏览
693
Eureka
Eureka 2024-08-15
这家伙很懒,什么也没写!

可以使用一个宏 \@addtoreset 来更新 equation 计数器, 可用的代码如下:

\documentclass{article}
\usepackage{amsmath}
\usepackage{lipsum}
\renewcommand{\thesection}{\S{}\arabic{section}}
\makeatletter
\@addtoreset{equation}{section}
\renewcommand{\theequation}{\arabic{section}.\arabic{equation}}
\makeatother



\begin{document}
\tableofcontents
\vspace*{8em}

\section{equation sign}
\begin{align}
  a^2 + b^2 = c^2 \\
  a^2 + b^2 = c^2 \\
  1 + 1 = 3
\end{align}


\section{ref style}
\begin{subequations}
  \begin{align}
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^1}{1111} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^2}{2222} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^3}{3333} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^4}{4444}\label{eq:pythagoras}
  \end{align}
  \label{eq:mult-lines}
\end{subequations}


Hello world \ref{eq:pythagoras}, equation ref style: \eqref{eq:pythagoras}
\end{document}

编译结果:
image.png

3 个回答
88869
88869 2024-08-15
这家伙很懒,什么也没写!

\renewcommand{\theequation}{\arabic{section}.\arabic{subsection}\alph{equation}}

放在导言区的

\numberwithin{equation}{section}

下面看看是不是你想要的效果

Sagittarius Rover
Sagittarius Rover 2024-08-16
我要成为TikZ糕手/(ㄒoㄒ)/~~

浅浅自问自答一下,感谢啸行大佬的热情帮助,要想实现这一效果的话,还可以直接借助ctex宏包提供的format选项实现这一效果.

image.png

\documentclass[12pt]{ctexart}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{lipsum}
\ctexset{
    section/name = {\S},
    subsection/name = {\S},
}
\numberwithin{equation}{section}
\begin{document}
\section{equation sign}
\subsection{first subsection}
\begin{align}
  a^2 + b^2 = c^2 \\
  1 + 1 = 3
\end{align}
\subsection{second subsection}
This is a text paragraph.
\section{ref style}
\subsection{A subsection}
\begin{subequations}
  \begin{align}
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^1}{1111} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^2}{2222} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^3}{3333} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^4}{4444}\label{eq:pythagoras}
  \end{align}
  \label{eq:mult-lines}
\end{subequations}
\subsection{Another subsection}
\begin{equation}
    a^2+b^2=c^2
\end{equation}
Hello world \ref{eq:pythagoras}, equation ref style: \eqref{eq:pythagoras}
\end{document}

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览