为什么 \SetAlFnt 在 algorithm2e 中不起作用?

为什么 \SetAlFnt 在 algorithm2e 中不起作用?

我想使用 来\SetAlFn更改算法的字体大小,但它似乎根本不起作用。这是我的代码。

\documentclass{article}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[tight,TABTOPCAP]{subfigure}
\usepackage{amsmath}
\usepackage[noline]{algorithm2e}
\SetAlFnt{\small}
\begin{document}
    \begin{minipage}[b]{0.8\linewidth}%
        \begin{algorithm}[H]%
            \DontPrintSemicolon
            \SetNoFillComment
            \SetAlFnt{\small\sf}
            %\SetCommentSty{tiny}
            \SetKwProg{Fn}{Function}{}{end}
            \Fn{$u^h \leftarrow $V-cycle($A_h, u_0^h, f_h$)}{
                \uIf{$h==h_0$}{\KwRet{$u_h \leftarrow A_h^{-1}f_h $}\tcc*[r]{bottom solve}}
                $u^h \leftarrow \text{smooth}(A_h,u_0^h,f_h)$\tcc*[r]{pre-smooth}
                $r^h \leftarrow f_h-A_hu^h$\tcc*[r]{residual}
                $r^{2h} \leftarrow I_h^{2h}r^h$\tcc*[r]{restriction}
                $\delta^{2h} \leftarrow \text{V-cycle}(A_{2h},0,r^{2h})$\tcc*[r]{recursive call}
                $u^h \leftarrow u^h + I_{2h}^h\delta^{2h}$\tcc*[r]{interpolation}
                $u^h \leftarrow \text{smooth}(A_{2h},u^h,f_h)$\tcc*[r]{post-smooth}
                \KwRet{$u^h$}\;
            }   
            \caption{V-cycle}   
        \end{algorithm}%
    \end{minipage}%
\end{document}

答案1

文档元素的样式最好以一致的方式进行。因此,algorithm2e's\SetAlFnt在环境启动时发出algorithm。这就是为什么,当你\SetAlFnt在算法中途调用时……或者甚至在之后立即调用时\begin{algorithm},更改算法字体已经太晚了。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\usepackage[noline]{algorithm2e}
\SetAlFnt{\small\sffamily}
\begin{document}
\begin{algorithm}[H]
  \DontPrintSemicolon
  \SetNoFillComment
  \SetKwProg{Fn}{Function}{}{end}
  \Fn{$u^h \leftarrow {}$\textup{\AlFnt V-cycle}($A_h, u_0^h, f_h$)}{
    \uIf{$h==h_0$}{\KwRet{$u_h \leftarrow A_h^{-1}f_h $}\tcc*[r]{bottom solve}}
    $u^h \leftarrow \text{smooth}(A_h,u_0^h,f_h)$\tcc*[r]{pre-smooth}
    $r^h \leftarrow f_h-A_hu^h$\tcc*[r]{residual}
    $r^{2h} \leftarrow I_h^{2h}r^h$\tcc*[r]{restriction}
    $\delta^{2h} \leftarrow \text{V-cycle}(A_{2h},0,r^{2h})$\tcc*[r]{recursive call}
    $u^h \leftarrow u^h + I_{2h}^h\delta^{2h}$\tcc*[r]{interpolation}
    $u^h \leftarrow \text{smooth}(A_{2h},u^h,f_h)$\tcc*[r]{post-smooth}
    \KwRet{$u^h$}\;
  }
  \caption{V-cycle}
\end{algorithm}
\end{document}

请注意,只有某些元素符合新设置的衬线字体。这是因为虽然\AlFnt(基于 定义\SetAlFont)是在 处发布的\begin{algorithm},但每个组件都有自己的一组字体定义(例如\SetKwStyey Kordsw等)。有关更多详细信息,请参阅部分9.5.3 设置字体标准字体形状和样式(第 27 页)algorithm2e文档

相关内容