如何在算法的关键字中使用重音符号(如波浪号)?

如何在算法的关键字中使用重音符号(如波浪号)?

这是我在 algoritmo.tex 中的代码:

Foi usado o algoritmo 1 em MATLAB para resolver o problema $\mathop{min}_{x \in\mathbb{R}^{n}} f(x)$.

\begin{algorithm}

\caption{Método da Região de Confiança implementado }
\SetAlgoLined
\DontPrintSemicolon

\begin{algorithmic}[1]
\Objetivo
\Desc{Encontrar uma solução aproximada para o problema $\mathop{min}_{x \in\mathbb{R}^{n}} f(x)$.}
\EndObjetivo
\Input 
\Desc{Uma função f: ${\mathbb{R}}^{n} {\rightarrow} {\mathbb{R}}$.}
\Desc{Gradiente da função ${\nabla}$f: ${\mathbb{R}}^{n} {\rightarrow} {\mathbb{R}}^{n}$.}
\Desc{Hessiana da função ${\nabla}^{2}$f: ${\mathbb{R}}^{n} {\rightarrow} {\mathbb{R}}^{n{\times}n}$.}
\Desc{Iterada inicial $x_{0} \in\mathbb{R}^{n}$.}
\Desc{O raio da região de confiança ${\Delta}_{0}$.}
\Desc{A precisão desejada $\epsilon \in\mathbb{R}, \epsilon>0$.}
\Desc{Os parâmetros $0 < {\eta}_{1} \leq {\eta}_{2} < 1$.}
\EndInput
\Output
\Desc{Uma aproximação da solução óptima $x^{*} \in\mathbb{R}^{n}$.}
\Desc{O número de iterações k.}
\Desc{Um array com todas as iterações de $x_{k}$, o respetivo valor}
\Desc{da função $f(x_{k})$, a norma dos gradiente $\|{\nabla}f(x_{k})\| \in\mathbb{R}$,}
\Desc{o respetivo ${\rho}$ e o tipo de passo feito.}
\Desc{O estado da iteração num array de strings, pobre (-), bom (+),}
\Desc{muito bom (++).}
\EndOutput
\Inicializacao
\Desc{k:=0}
\EndInicializacao
\Repetir
\Desc{Calcular $p_{k}$ ao resolver o subproblema (\ref{SubProblema}) com o método de dogleg}
\Desc{ou com o Gradiente Conjugado de Steihaug.}
\Desc{$\rho := \frac{f(x_{k}) - f(x_{k}+p_{k})}{m_{x_{k}}(x_{k})-m_{x_{k}}(x_{k} + p_{k})}$}
\Se { }$\rho < \eta_{1}$ então
\Desc{$x_{k+1} := x_{k}$}
\Desc{${\Delta}_{k+1} := \frac{1}{2}{\Delta}_{k}$}
\EndSe
\Senao 
\Desc{$x_{k+1} := x_{k} + p_{k}$}
\Se { }$\rho \geq \eta_{2}$ então
\Desc{${\Delta}_{k+1} := 2{\Delta}_{k}$}
\EndSe
\Senao
\Desc{${\Delta}_{k+1} := {\Delta}_{k}$}
\EndSenao
\EndSenao
\Desc{$k:= k + 1$}
\EndRepetir
\Ate { }$\|{\nabla}f(x_{k})\| \leq \epsilon$ ou $k > 500$
\EndAte 

$NumeroIteracoes := k , x^{*} := x_{k}$  
\end{algorithmic}
\end{algorithm}

在我的 main.tex 中我使用这个:

...
\algblock{Objetivo}{EndObjetivo}
\algnotext{EndObjetivo}
\algblock{Input}{EndInput}
\algnotext{EndInput}
\algblock{Output}{EndOutput}
\algnotext{EndOutput}
\algblock{Inicializacao}{EndInicializacao}
\algnotext{EndInicializacao}
\algblock{Repetir}{EndRepetir}
\algnotext{EndRepetir}
\algblock{Ate}{EndAte}
\algnotext{EndAte}
\algblock{Se}{EndSe}
\algnotext{EndSe}
\algblock{Senao}{EndSenao}
\algnotext{EndSenao}
\newcommand{\Desc}[1]{\State \makebox[2em][l]{#1}}

如果我使用~,就会出现错误。

输出如下:

在此处输入图片描述

我想要的是 Senão、Inicialização 和 Até,而不是“Senao”、“Inicializacao”和“Ate”,但由于某种原因,它并没有这样出现。

另外,你们知道我如何添加垂直线并且“NumeroIteracoes = k”变成“NúmeroIterações = k”并且在它的左侧有行号 36 吗?

答案1

  1. 而不是定义新块的简短形式

    \algblock{Ate}{EndAte}
    

    使用长格式:

    \algblockdefx{Ate}{EndAte}{\textbf{Até}}{\textbf{EndAté}}
    

    前两个参数成为命令的名称,\Ate\EndAte,而第三和第四个参数给出用于开始和结束块的打印文本。有关详细信息,请参阅包装文档,也可以通过命令行使用texdoc algorithmicx

  2. 命令\SetAlgoLined\DontPrintSemicolon将不起作用,因为它们属于不同的排版算法包,algorithm2e而您似乎使用了algorithmicx

  3. 在数学模式下使用\textit{NúmeroIterações}而不是NúmeroIterações。这有两个效果:UTF 字符有效(您会得到重音符号),并且字母之间的间距将与单词中的字母相对应,而不是与单字母变量相对应。

  4. 在普通语句前加上关键字\State。这将处理缩进和编号。

在此处输入图片描述

\documentclass{article}
\usepackage{amsfonts}
\usepackage{algorithmicx}
\algblock{Objetivo}{EndObjetivo}
\algnotext{EndObjetivo}
\algblock{Input}{EndInput}
\algnotext{EndInput}
\algblock{Output}{EndOutput}
\algnotext{EndOutput}
\algblockdefx{Inicializacao}{EndInicializacao}{\textbf{Inicialização}}{\textbf{EndInicialização}}
\algnotext{EndInicializacao}
\algblock{Repetir}{EndRepetir}
\algnotext{EndRepetir}
\algblockdefx{Ate}{EndAte}{\textbf{Até}}{\textbf{EndAté}}
\algnotext{EndAte}
\algblock{Se}{EndSe}
\algnotext{EndSe}
\algblockdefx{Senao}{EndSenao}{\textbf{Senão}}{\textbf{EndSenão}}
\algnotext{EndSenao}
\newcommand{\Desc}[1]{\State \makebox[2em][l]{#1}}

\begin{document}
\begin{algorithmic}[1]
\Objetivo
\Desc{Encontrar uma solução aproximada para o problema $\mathop{min}_{x \in\mathbb{R}^{n}} f(x)$.}
\EndObjetivo
\Input 
\Desc{Uma função f: ${\mathbb{R}}^{n} {\rightarrow} {\mathbb{R}}$.}
\Desc{Gradiente da função ${\nabla}$f: ${\mathbb{R}}^{n} {\rightarrow} {\mathbb{R}}^{n}$.}
\Desc{Hessiana da função ${\nabla}^{2}$f: ${\mathbb{R}}^{n} {\rightarrow} {\mathbb{R}}^{n{\times}n}$.}
\Desc{Iterada inicial $x_{0} \in\mathbb{R}^{n}$.}
\Desc{O raio da região de confiança ${\Delta}_{0}$.}
\Desc{A precisão desejada $\epsilon \in\mathbb{R}, \epsilon>0$.}
\Desc{Os parâmetros $0 < {\eta}_{1} \leq {\eta}_{2} < 1$.}
\EndInput
\Output
\Desc{Uma aproximação da solução óptima $x^{*} \in\mathbb{R}^{n}$.}
\Desc{O número de iterações k.}
\Desc{Um array com todas as iterações de $x_{k}$, o respetivo valor}
\Desc{da função $f(x_{k})$, a norma dos gradiente $\|{\nabla}f(x_{k})\| \in\mathbb{R}$,}
\Desc{o respetivo ${\rho}$ e o tipo de passo feito.}
\Desc{O estado da iteração num array de strings, pobre (-), bom (+),}
\Desc{muito bom (++).}
\EndOutput
\Inicializacao
\Desc{k:=0}
\EndInicializacao
\Repetir
\Desc{Calcular $p_{k}$ ao resolver o subproblema (\ref{SubProblema}) com o método de dogleg}
\Desc{ou com o Gradiente Conjugado de Steihaug.}
\Desc{$\rho := \frac{f(x_{k}) - f(x_{k}+p_{k})}{m_{x_{k}}(x_{k})-m_{x_{k}}(x_{k} + p_{k})}$}
\Se { }$\rho < \eta_{1}$ então
\Desc{$x_{k+1} := x_{k}$}
\Desc{${\Delta}_{k+1} := \frac{1}{2}{\Delta}_{k}$}
\EndSe
\Senao 
\Desc{$x_{k+1} := x_{k} + p_{k}$}
\Se { }$\rho \geq \eta_{2}$ então
\Desc{${\Delta}_{k+1} := 2{\Delta}_{k}$}
\EndSe
\Senao
\Desc{${\Delta}_{k+1} := {\Delta}_{k}$}
\EndSenao
\EndSenao
\Desc{$k:= k + 1$}
\EndRepetir
\Ate { }$\|{\nabla}f(x_{k})\| \leq \epsilon$ ou $k > 500$
\EndAte

\State $\textit{NúmeroIterações} := k , x^{*} := x_{k}$  
\end{algorithmic}
\end{document}

如何将算法的标题更改为另一种语言(此处为:葡萄牙语)

在序言中,在之后添加以下几行\usepackage{algorithm}

\makeatletter
\renewcommand\ALG@name{Algoritmo}
\makeatother
\renewcommand\listalgorithmname{Lista de Algoritmos}

在此处输入图片描述

\documentclass{article}
\usepackage{algorithm}
\makeatletter
\renewcommand\ALG@name{Algoritmo}
\makeatother
\renewcommand\listalgorithmname{Lista de Algoritmos}
\begin{document}
\begin{algorithm}
\caption{Método 1}
\end{algorithm}
\begin{algorithm}
\caption{Método 2}
\end{algorithm}
\listofalgorithms
\end{document}

相关内容