将 qed 添加到 lstlisting 的最后一行

将 qed 添加到 lstlisting 的最后一行

考虑以下代码:

\documentclass{article}
\usepackage{amssymb}
\usepackage{listings}
\usepackage{lipsum}
\begin{document}
\begin{lstlisting}[frame=tb,numbers=none,emph={quadrat},mathescape=true,literate={{≔}{$\coloneqq$}1}]
proc quadrat  =  (x: var Nat, a: Nat):  x:= a * a $\Box$
\end{lstlisting}
\lipsum[1]
\end{document}

在输出中,qed 符号不在右边距:

pdflatex 输出

如何将 QED 符号移动到右边距而无需手动引入\hspace{...}(当页面尺寸发生变化时需要更改)?

顺便说一句,ntheoremamsthm是不可行的,因为它们与我的完整、非最小设置(svmono + 大量其他包)发生不可修复的冲突。

答案1

您可以使用以下选项退出到 latex escapechar=[character]

\documentclass{article}
\usepackage{amssymb}
\usepackage{listings}
\usepackage{lipsum}
\begin{document}
\begin{lstlisting}[frame=tb,
                   numbers=none,
                   emph={quadrat},
                   mathescape=true,
                   escapechar=§,
                   literate={{≔}{$\coloneqq$}1}]
proc quadrat  =  (x: var Nat, a: Nat):  x:= a * a §\hfill$\Box$
\end{lstlisting}
\lipsum[1]
\end{document}

结果

我将其用作§转义符,选择一个你喜欢的,代码中未使用的。你可以再次使用转义符返回正常代码。你可以在文档

相关内容