在算法浮点数中的图形旁边应用垂直规则

在算法浮点数中的图形旁边应用垂直规则

背景

使用 LyX 编写一本书。书中显示的源代码清单是图形。图形旁边应该有垂直线。但只有嵌入算法浮点中的图形。浮点的代码类似于:

\begin{algorithm}[H]
\includegraphics{source/sql/query-formatted.sql.png}

\caption{\label{alg:Query-with-Formatting}Query with Formatting}

\end{algorithm}

这些示例源代码片段有很多,而且会越来越多。手动向每个片段添加代码是不可取的。

问题

[H]下图中的清单 1.1 显示了嵌套在垂直规则和图形之间的放置字符:

https://i.stack.imgur.com/B1i4k.png

序言使用:

% Determine if the image is too wide for the page.
\makeatletter
\def\ScaleIfNeeded{%
  \ifdim\Gin@nat@width>\linewidth
    \linewidth
  \else
    \Gin@nat@width
  \fi
}
\makeatother

% Resize figures that are too wide for the page.
\let\oldincludegraphics\includegraphics
\renewcommand\includegraphics[2][]{%
  \oldincludegraphics[width=\ScaleIfNeeded]{#2}
  \graphicsalignment
}

% Do not centre graphics within Algorithm floats.    
\expandafter\def\expandafter\algorithm\expandafter{%
  \expandafter\let\expandafter\graphicsalignment\expandafter\relax
  \algorithm
  \vrule width 1em
}

\let\graphicsalignment\centering

问题

如何消除该[H]论点,使之\vrule与图形齐平,并置于“这里肯定是”的位置?(我已经设法用其他方法做到这一点,但图形不再是“这里H肯定是”)。

谢谢你!

答案1

我认为你想做的是改变

\expandafter\def\expandafter\algorithm\expandafter{%
  \expandafter\let\expandafter\graphicsalignment\expandafter\relax
  \algorithm
  \vrule width 1em
}

\let\oldalgorithm\algorithm
\let\endoldalgorithm\endalgorithm
\renewenvironment{algorithm}[1][htbp]{
        \let\graphicsalignment\relax
        \oldalgorithm[#1]
                \vrule width1em
                \kern1em
}{%
        \endoldalgorithm
}

这仅适用于图形,因为 TeX 将它们视为单个框。对于algorithm包含algorithmic环境的更正常用法,coderule上一个问题中的环境会更合适。

相关内容