新命令前的额外空格

新命令前的额外空格

我来找你是因为我在重新定义命令时遇到了问题。

在这种情况下,我试图更改数学方程的编号。问题是在“Eq”之前和引用“a”(粗体)之前添加了一个空格,如下所示。

问题截图

我在网上寻找解决这个问题的方法。所以我输入了“\ignorespaces”,但问题仍然存在……

\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[leqno]{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lipsum} 
\usepackage[french]{babel}
\usepackage[showframe]{geometry} 


\makeatletter
    \renewcommand\theequation{
        \ignorespaces\@alph\c@equation
    }
    \renewcommand\tagform@[1]{
        \maketag@@@{
            \ignorespaces Eq.~\ignorespaces#1.\unskip\@@italiccorr
        }
    }

    % reference
    \renewcommand{\eqref}[1]{
        \ignorespaces\ref{#1}
    }
\makeatother

\begin{document}

\chapter{First chapter}
\section{Section 1}

\lipsum[1]

\begin{align}
    f(x) = x^2 + \frac{1}{\sqrt[3]{x}}
    \label{eq1} 
\end{align}
\textbf{See equation \ref{eq1}.}
\lipsum[2]
\begin{align}
    g(x) = x^3 + \frac{4}{\sqrt{x}}
    \label{eq2} 
\end{align}

\end{document}

你知道该怎么解决吗?我确信这是一个愚蠢的解决方案,但现在我还没想出来。

答案1

无需重新发明轮子:您可以使用命令\newtagform来执行此操作mathtools,该命令会加载amsmath

\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[leqno]{mathtools}
\usepackage{lipsum}
\usepackage[french]{babel}
\usepackage[showframe]{geometry}
\renewcommand{\theequation}{\alph{equation}}
\newtagform{alph}[Eq. ]{}{}
\usetagform{alph}

\begin{document}

\chapter{First chapter}
\section{Section 1}

\lipsum[1]

\begin{align}
    f(x) = x^2 + \frac{1}{\sqrt[3]{x}}
    \label{eq1}
\end{align}
\textbf{See equation \ref{eq1}.}

\section{Section 2}
\lipsum[2]
\begin{align}
    g(x) = x^3 + \frac{4}{\sqrt{x}}
    \label{eq2}
\end{align}

\end{document} 

在此处输入图片描述

答案2

根据@egreg的评论进行编辑:(感谢@egreg)

\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[leqno]{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lipsum} 
\usepackage[french]{babel}
\usepackage[showframe]{geometry} 


\makeatletter
    \renewcommand\theequation{%
        \@alph\c@equation
    }
    \renewcommand\tagform@[1]{%
        \maketag@@@{%
        Eq.~\ignorespaces#1.\unskip\@@italiccorr
        }%
    }

    % reference
    \renewcommand{\eqref}[1]{%
        \ref{#1}%
    }
\makeatother

\begin{document}

\chapter{First chapter}
\section{Section 1}

\lipsum[1]

\begin{align}
    f(x) = x^2 + \frac{1}{\sqrt[3]{x}}
    \label{eq1} 
\end{align}
\textbf{See equation \ref{eq1}.}
\lipsum[2]
\begin{align}
    g(x) = x^3 + \frac{4}{\sqrt{x}}
    \label{eq2} 
\end{align}

\end{document}

%在行末添加一些s,如下所示:

如果你不加注释就保留它们,这些标记将被视为空格。

\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[leqno]{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lipsum} 
\usepackage[french]{babel}
\usepackage[showframe]{geometry} 


\makeatletter
    \renewcommand\theequation{%
        \ignorespaces\@alph\c@equation
    }
    \renewcommand\tagform@[1]{%
        \maketag@@@{%
            \ignorespaces Eq.~\ignorespaces#1.\unskip\@@italiccorr
        }%
    }

    % reference
    \renewcommand{\eqref}[1]{%
        \ignorespaces\ref{#1}%
    }
\makeatother

\begin{document}

\chapter{First chapter}
\section{Section 1}

\lipsum[1]

\begin{align}
    f(x) = x^2 + \frac{1}{\sqrt[3]{x}}
    \label{eq1} 
\end{align}
\textbf{See equation \ref{eq1}.}
\lipsum[2]
\begin{align}
    g(x) = x^3 + \frac{4}{\sqrt{x}}
    \label{eq2} 
\end{align}

\end{document}

上述代码应该可以工作

相关内容