我正在寻找一种简洁的方法/最佳实践来编写使用指针和引用的块。我过去algorithmic
曾成功过,但这是我第一次尝试用指针编写一些东西。C/C++ 中的代码片段如下所示:algorithmic
Node *n = &root;
n->value = input;
我尝试的 LaTeX 方法看起来不太正确:
\STATE $n \leftarrow \& \mathrm{root}$
\STATE $n \rightarrow \mathrm{value} \leftarrow \mathrm{input}$
呈现为:
我觉得有点奇怪,因为同时使用了&
和 左右箭头,看起来好像有两个东西指向 mathrm。问题似乎与\leftarrow
用于赋值的 冲突,但这\leftarrow
似乎是常见的做法,所以我想遵循它。
当然,我也可以重写算法以不使用指针,但这会使代码块增加近 2 倍,而且我正在努力突破页面限制。:) 当然,这里的最终目标是为了可读性。
答案1
正如您所说,使用左箭头进行赋值会使使用右箭头有点问题。这里有一些建议,我非常喜欢下标版本,但这取决于您是否需要C.
或->
下标的其他用途。我还将 & 做得更小,因为我不喜欢大号的 :-) 如果您确实保留,\rightarrow
您可能应该使用它{\rightarrow}
,这样它就会使用更近的间距,特别是与赋值不同的间距。
\documentclass{article}
\usepackage{algorithmic}
\begin{document}
\begin{algorithmic}
\STATE $n \leftarrow \& \mathrm{root}$
\STATE $n \rightarrow \mathrm{value} \leftarrow \mathrm{input}$
\STATE
\STATE $n \leftarrow {\scriptstyle\&}\mathrm{root}$
\STATE $n _\mathrm{value} \leftarrow \mathrm{input}$
\STATE
\STATE $n \leftarrow {\scriptstyle\&} \mathrm{root}$
\STATE $n {\scriptscriptstyle\searrow} \mathrm{value} \leftarrow \mathrm{input}$
\end{algorithmic}
\end{document}