上标处于文本模式时 algorithm2e 中的问题

上标处于文本模式时 algorithm2e 中的问题

我该如何解决这个问题纽埃沃梅杰? 它们出现在数学模式中但它们应该出现在文本模式中:

在此处输入图片描述

另外,为什么\argmax_{\mathbf{x} \in \mathcal{X}}出现在 arg max 旁边而不是下面?

\documentclass{article}

\usepackage{algorithm2e}
\usepackage{amsmath}
\DeclareMathOperator*{\argmin}{arg\,min}
\DeclareMathOperator*{\argmax}{arg\,max}

\begin{document}

\begin{algorithm}[H]

    \DontPrintSemicolon % Some LaTeX compilers require you to use \dontprintsemicolon instead

    \KwIn{.}
    \KwOut{.}
    %   \textit{Inicialización}:\\
    %   Aleatoriamente inicializar $b_{u}$ y $b_{i}$\\

    \For{$t = 1$ \text{hasta} $T$}{

        Ajustar $\Psi$ hasta $\mathcal{H}$\\ 
        $\mathbf{x}^{\text{\tiny Nuevo}} = \argmax_{\mathbf{x} \in \mathcal{X}} a(\Psi(\mathbf{x},\mathcal{D}), \mathcal{H})$\\
        Evaluar $b(\mathbf{x}^{\text{\tiny Nuevo}},\mathcal{D})$\\

        \If{$b(\mathbf{x}^{\text{\tiny Nuevo}},\mathcal{D}) < b(\mathbf{x}^{\text{\tiny Mejor}},\mathcal{D})$}{


            $\mathbf{x}^{\text{\tiny Mejor}}=\mathbf{x}^{\text{\tiny Nuevo}}$\\
            $\mathcal{H} = \mathcal{H} \cup (\mathbf{x}^{\text{\tiny Nuevo}},b(\mathbf{x}^{\text{\tiny Nuevo}},\mathcal{D})) $


        }

    }

\Return $\mathbf{x}^{\text{\tiny Mejor}}$

\end{algorithm}

\end{document}

答案1

\If扩展时,它的第一个参数(条件)被包装在一个\emph{...}调用中,使得文本被强调,即通常以斜体字体显示。\text将其参数设置为当前文本字体,在这种情况下为斜体,因此上标就是这样打印的。

根据经验,\text仅当您想要使用实际的解释性文本时才在数学模式下使用。变量名称的部分通常不应与文本字体混合。因此作为\mathrm打印上标的替代用途。为了使文本比普通上标更小,您可以另外设置\scriptscriptsize,因为\tiny在数学模式下不起作用。

为了消除代码冗长,我建议为这些特殊变量定义新命令:

\newcommand\xNuevo{\ensuremath{\mathbf{x}^{\scriptscriptstyle\mathrm{Nuevo}}}}
\newcommand\xMejor{\ensuremath{\mathbf{x}^{\scriptscriptstyle\mathrm{Mejor}}}}

并在您的代码中使用它们:

\If{$b(\xNuevo,\mathcal{D}) < b(\xMejor,\mathcal{D})$}{...}

至于第二个问题,内联数学模式中的运算符(例如 between $...$)的下标和上标都设置在它们旁边,以减少当前行的高度。如果要强制上下标,请\limits在运算符名称后添加:

\argmax\limits_{\mathbf{x} \in \mathcal{X}}

如果你总是想要上面/下面的脚本,你可以定义\argmax如下:

\newcommand\argmax{\mathop{\operatorname{arg\,max}}\limits}

更新示例:

\documentclass{article}

\usepackage{algorithm2e}
\usepackage{amsmath}
\DeclareMathOperator*{\argmin}{arg\,min}
%\DeclareMathOperator*{\argmax}{arg\,max}
\newcommand\argmax{\mathop{\operatorname{arg\,max}}\limits}

\newcommand\xNuevo{%
    \ensuremath{\mathbf{x}^{\scriptscriptstyle\mathrm{Nuevo}}}%
}
\newcommand\xMejor{%
    \ensuremath{\mathbf{x}^{\scriptscriptstyle\mathrm{Mejor}}}%
}

\begin{document}

\begin{algorithm}[H]

    \DontPrintSemicolon % Some LaTeX compilers require you to use \dontprintsemicolon instead

    \KwIn{.}
    \KwOut{.}
    %   \textit{Inicialización}:\\
    %   Aleatoriamente inicializar $b_{u}$ y $b_{i}$\\

    \For{$t = 1$ \text{hasta} $T$}{

        Ajustar $\Psi$ hasta $\mathcal{H}$\\ 
        $\mathbf{x}^{\text{\tiny Nuevo}} = \argmax\limits_{\mathbf{x} \in \mathcal{X}} a(\Psi(\mathbf{x},\mathcal{D}), \mathcal{H})$\\
        Evaluar $b(\mathbf{x}^{\text{\tiny Nuevo}},\mathcal{D})$\\

        \If{$b(\xNuevo,\mathcal{D}) < b(\xMejor,\mathcal{D})$}{


            $\mathbf{x}^{\text{\tiny Mejor}}=\mathbf{x}^{\text{\tiny Nuevo}}$\\
            $\mathcal{H} = \mathcal{H} \cup (\mathbf{x}^{\text{\tiny Nuevo}},b(\mathbf{x}^{\text{\tiny Nuevo}},\mathcal{D})) $


        }

    }

\Return $\mathbf{x}^{\text{\tiny Mejor}}$

\end{algorithm}

\end{document}

在此处输入图片描述

相关内容