如何在算法中放置黑色方块?

如何在算法中放置黑色方块?

我曾经在 libreoffice 中编写伪代码,它看起来像这样:libreoffice-伪代码

我正在尝试在 Latex 中写一些类似的东西。我使用 algorithm2e。这是我得到的最接近的东西。算法2e

我怎样才能在同时放置一个黑色方块?

这是我尝试过的:

\documentclass{article}

\usepackage[vlined]{algorithm2e}
\usepackage{amsmath}
\usepackage{amsfonts} 
\usepackage{amssymb}
\usepackage{amsthm}

\begin{document}

\begin{algorithm}

\textbf{positive integers }$a,b,r$\;
\textbf{read } $a,b$\;
\While{$ b \neq 0 $}{
$r \gets a\%b$\;
$a \gets b$\;
$b \gets r$\;
\qed
}
\textbf{print } $a$\;

\textbf{positive integers }$a,b,r$\;
\textbf{read } $a,b$\;
\While{$ b \neq 0 $}{
$r \gets a\%b$\;
$a \gets b$\;
$b \gets r$\;
}\qed
\textbf{print } $a$\;


\end{algorithm}

\end{document}

我得到了这个: 不好

答案1

下面我更改\algocf@Hlne负责添加 L 形规则底部存根的部分,添加一个垂直居中的黑色方块。

在此处输入图片描述

\documentclass{article}

\usepackage[vlined]{algorithm2e}

\makeatletter
\renewcommand{\algocf@Hlne}{%
  \rule{.5em}{.4pt}% horizontal rule
  \smash{\rule[\dimexpr-.5ex+.2pt]{1ex}{1ex}}% ending block
}
\makeatother

\begin{document}

\begin{algorithm}
  \textbf{positive integers }$a,b,r$\;
  \textbf{read } $a,b$\;
  \While{$ b \neq 0 $}{
    $r \gets a\%b$\;
    $a \gets b$\;
    $b \gets r$\;
  }
  \textbf{print } $a$\;
\end{algorithm}

\end{document}

答案2

希望这有帮助:

\documentclass{article}

\usepackage[vlined]{algorithm2e}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}

\DeclareRobustCommand{\qed}{%
  \ifmmode \mathqed
  \else
   \hbox{\vbox{\vspace*{3pt}$\blacksquare$\vspace*{-3pt}}}%
  \fi
}

\begin{document}

\begin{algorithm}

\textbf{positive integers }$a,b,r$\;
\textbf{read } $a,b$\;
\While{$ b \neq 0 $}{
$r \gets a\%b$\;
$a \gets b$\;
$b \gets r$\;
\qed}
\textbf{print } $a$\;

\textbf{positive integers }$a,b,r$\;
\textbf{read } $a,b$\;
\While{$ b \neq 0 $}{
$r \gets a\%b$\;
$a \gets b$\;
$b \gets r$\;
\qed}
\textbf{print } $a$\;
\end{algorithm}

\end{document}

在此处输入图片描述

相关内容