为什么我的公式中的字体不同?

为什么我的公式中的字体不同?

我的代码是

\newcommand\rsx[1]{\left.{#1}\vphantom{\Big|}\right|}
\begin{eqnarray}
&&let \;\; L(\bf{X},\lambda,\mu)= f(\bf{X})+\sum_{i=1}^p \lambda_{i}h_{i}(\bf{X})+\sum_{j=1}^q\mu_{j}g_{j}(\bf{X}) \nonumber\\
&& \;\;\;\;\; \rsx{\frac{\partial L}{\partial \bf{X}}}_{\bf{X}=\bf{X^*}}=0 \nonumber\\
&& \;\;\;\;\; \lambda_{i}\neq0,\;\;\;\mu_{j}\geq0,\;\;\;\nonumber\\
&& \;\;\;\;\; \mu_{j}g_{j}(\bf{X^*})=0,\;\;\; h_{i}(\bf{X}^*)=0 \;\;\; g_{j}(\bf{X^*})\leq0
\label{equ: KKT conditions}
\end{eqnarray}

下面是结果,从该图可以看出,这些方程中的字体类型不同,为什么(在不同的行中看到字母“g”)?

在不同行中看到字母“g”

答案1

对齐点可以进行更好的微调,但我只是想纠正代码中的一些问题。以下是我输入公式的方式:

% arara: pdflatex

\documentclass{article}
\usepackage{mathtools}
\newcommand{\pder}[2][]{\frac{\partial#1}{\partial#2}}
\newcommand\numberthis{\addtocounter{equation}{1}\tag{\theequation}}

\begin{document}
\begin{align*}
\MoveEqLeft[7]\text{let } L(\mathbf{X},\lambda,\mu)= f(\mathbf{X})+\sum_{i=1}^p \lambda_{i}h_{i}(\mathbf{X})+\sum_{j=1}^q\mu_{j}g_{j}(\mathbf{X})\\
    \pder[L]{\mathbf{X}}\biggr|_{\mathbf{X}=\mathbf{X}^*}&=0\\
    \lambda_{i}&\neq 0,\quad\mu_{j}\geq 0,\\
    \mu_{j}g_{j}(\mathbf{X}^*)&=0,\quad h_{i}(\mathbf{X}^*)=0,\quad g_{j}(\mathbf{X}^*)\leq 0 \numberthis\label{equ:KKTconditions}
\end{align*}
\end{document}

在此处输入图片描述


或者:

\begin{align*}
\MoveEqLeft[2]\text{let } L(\mathbf{X},\lambda,\mu)= f(\mathbf{X})+\sum_{i=1}^p \lambda_{i}h_{i}(\mathbf{X})+\sum_{j=1}^q\mu_{j}g_{j}(\mathbf{X})\\
    &\pder[L]{\mathbf{X}}\biggr|_{\mathrlap{\mathbf{X}=\mathbf{X}^*}}=0\\
    &\lambda_{i}\neq 0,\quad\mu_{j}\geq 0,\\
    &\mu_{j}g_{j}(\mathbf{X}^*)=0,\quad h_{i}(\mathbf{X}^*)=0,\quad g_{j}(\mathbf{X}^*)\leq 0 \numberthis\label{equ:KKTconditions}
\end{align*}

在此处输入图片描述

答案2

该命令\bf是 Plain-TeX 命令。虽然它在 LaTeX 中仍可继续使用,但已被视为已弃用。

您遇到的问题的直接原因是 的使用不正确\bf:它是一个开关,不接受参数。因此,您应该写{\bf ...}而不是\bf{...}。正如您“发现的”, 的范围\bf{...} ...不是花括号内的材料;它延伸到当前(数学)组的末尾。

对于 LaTeX 文档,不应\bf再使用。对于文本材料,请写\textbf{...}{\bfseries ...}。对于数学材料, \mathbf{...}如果您想要直立粗体字母,请使用,如果您想要\bm{...}(需要软件包)bm斜体粗体字。

您的代码片段还有两个问题:

  • 不要使用eqnarray环境:它已被严重弃用。请使用诸如这样的环境align。请参阅帖子eqnarray 与 align彻底检查不使用的原因eqnarray

  • 您似乎在进行大量的视觉格式化。这使得代码既难以阅读,又不如您希望的那样灵活。下面的代码提出了一些替代措施,并使用 代替align。它还展示了和eqnarray产生的不同效果。\mathbf\bm

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}  % for 'align' environment
\usepackage{bm}
\newcommand\rsx[1]{#1\vphantom{\Big|}\bigg\rvert}

\begin{document}

First with \verb+\bm{...}+:
\begin{align}
\text{Let }&L(\bm{X},\lambda,\mu)= f(\bm{X})
  +\sum_{i=1}^p \lambda_{i}h_{i}(\bm{X})
  +\sum_{j=1}^q\mu_{j}g_{j}(\bm{X}) \nonumber\\
&\rsx{\frac{\partial L}{\partial\bm{X}}}
  _{\bm{X}=\bm{X^*}} =0 \nonumber\\
&\lambda_{i}\neq0,\quad \mu_{j}\geq0,\nonumber\\
&\mu_{j} g_{j}(\bm{X^*})=0,\quad 
  h_{i}(\bm{X}^*)=0,\quad 
  g_{j}(\bm{X^*})\leq0
\label{equ:KKT_conditions}
\end{align}

\bigskip
Second with \verb+\mathbf{...}+
\begin{align}
\text{Let }&L(\mathbf{X},\lambda,\mu)= f(\mathbf{X})
  +\sum_{i=1}^p \lambda_{i}h_{i}(\mathbf{X})
  +\sum_{j=1}^q\mu_{j}g_{j}(\mathbf{X}) \nonumber\\
&\rsx{\frac{\partial L}{\partial\mathbf{X}}}
  _{\mathbf{X}=\mathbf{X^*}} =0 \nonumber\\
&\lambda_{i}\neq0,\quad \mu_{j}\geq0,\nonumber\\
&\mu_{j} g_{j}(\mathbf{X^*})=0,\quad 
  h_{i}(\mathbf{X}^*)=0,\quad 
  g_{j}(\mathbf{X^*})\leq0
\label{equ:KKT_conditions_alt}
\end{align}

\end{document} 

相关内容