使用便捷命令关闭间距

使用便捷命令关闭间距

我想要定义一个名为的命令\ksp{},如下所示:

\newcommand*{\ksp}{K_{sp}}

但是,如果未在数学模式下调用此函数,则会出错。请参阅此处的示例。

\documentclass{article}
\newcommand*{\ksp}{K_{sp}}
\begin{document}
  Determine the \ksp{} of xyz. This will give an error 
\end{document}

因此,我将命令修改为内联数学模式。

\newcommand*{\ksp}{$K_{sp}$}

但是,如果我在以下情况下调用该函数,则此新版本的命令会出现错误:已经在数学模式下。请参阅此处的示例。

\documentclass{article}
\newcommand*{\ksp}{$K_{sp}$}
\begin{document}
    \begin{equation}
  Determine the \ksp{} of xyz. will get an error.
    \end{equation}
\end{document}

因此,我制作了一个更新的版本,它会尝试在调用命令时确定我们是否已经处于数学模式。我从以下代码中窃取了这里

% Ksp
\newif\ifstartedinmathmode
\newcommand*{\ksp}{
    \relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
    {\ifstartedinmathmode K_{sp}\else\hspace{0pt}$K_{sp}$\fi}
    }

此命令(上文)在两种情况下均有效。但是,它会在钾磷您可以在下面的文档中看到这一点。

\documentclass{article}
% Ksp
\newif\ifstartedinmathmode
\newcommand*{\ksp}{
    \relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
    {\ifstartedinmathmode K_{sp}\else$K_{sp}$\fi}
}
\begin{document}
    \begin{enumerate}
        \item Determine the $K_{sp}$ of blahblah. \% this is the normal way of writing the term.
        \item Determine the \ksp{} of blahblah. \% this is with the conditional command and it has extra whitespace surrounding the term.    
    \end{enumerate}
\end{document}

enter image description here

问题:

  • 有什么方法可以解决间距问题吗?
  • 我应该采取完全不同的方法吗?我只是想避免一遍又一遍地输入一些复杂的格式(Ksp 是我实际尝试进行的格式的简化,但它足以说明这一点)。

答案1

答案很简单。我在你的数学公式两边都加上了负数 \hskip。

    \documentclass{article}
% Ksp
\newif\ifstartedinmathmode
\newcommand*{\ksp}{
\relax\ifmmode\startedinmathmodetrue\else\startedinmathmodefalse\fi
{\ifstartedinmathmode K_{sp}\else\hskip-1mm$K_{sp}$\hskip-1mm\fi}
}
\begin{document}
    \begin{enumerate}
    \item Determine the $K_{sp}$ of blahblah. \% this is the normal way of writing the term.
    \item Determine the \ksp{} of blahblah. \% this is with the conditional command and it has extra whitespace surrounding the term.    
\end{enumerate}
\end{document}

生成: enter image description here

然而,正如@David Carlisle 的评论所示,更好的答案是:

\documentclass{article}
% Ksp

\newcommand*{\ksp}{\ensuremath$K_{sp}$}

\begin{document}
 \begin{enumerate}
  \item Determine the $K_{sp}$ of blahblah. \% this is the normal way of writing the term.
  \item Determine the \ksp{} of blahblah. \% this is with the conditional command and it has extra whitespace surrounding the term.    
\end{enumerate}
\end{document}

生成: enter image description here

相关内容