我曾经在 libreoffice 中编写伪代码,它看起来像这样:
我正在尝试在 Latex 中写一些类似的东西。我使用 algorithm2e。这是我得到的最接近的东西。
我怎样才能在同时放置一个黑色方块?
这是我尝试过的:
\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}