Background
Dozens of source code snippets inserted into a document as images inside of Algorithm floats. Other images are screen captures, inserted as Graphics floats, to make a distinction. All Graphic floats should be centred, thus the preamble contains:
% Resize figures that are too wide for the page.
\let\oldincludegraphics\includegraphics
\renewcommand\includegraphics[2][]{%
\oldincludegraphics[width=\ScaleIfNeeded]{#2}
\centering
}
This works, as ScaleIfNeeded
is defined elsewhere, resulting in all images being centred, including the Algorithm images.
Problem
The Algorithm floats also contain images, and these images are centred, which is undesirable. The code for each Algorithm resembles:
\begin{algorithm}[H]
\includegraphics{source/sql/query-formatted.sql.png}
\caption{\label{alg:Query-with-Formatting}Query with Formatting}
\end{algorithm}
Ideas
Tried:
% Centre algorithms.
\let\oldalgorithm\algorithm
\let\endoldalgorithm\endalgorithm
\renewenvironment{algorithm}[1][ht]{%
\begin{flushleft}
\oldalgorithm[#1]
\end{flushleft}
}%
{\endoldalgorithm}
This results in a number of errors ("Missing }
inserted", amongst others).
Question
How can images embedded exclusively within Algorithm floats be left-justified?
Bonus Question
How can a thick, left-hand vertical rule (or any stylistic change) be made to the Algorithm floats? For example, the left-hand border on the "batch source text" from this indirectly-related question. (Or any source code snippets on SuperUser.com, for that matter.)
Thank you!
Best Answer
This is untested, but how about something like the following?
This makes
\centering
do nothing in the algorithm environment. (There's actually a better way to do such things with theetoolbox
package.) If you want, you could replace\relax
with\raggedright
(or better\RaggedRight
from theragged2e
package) if you really want that behavior. Theflushleft
environment is not what you want since that's going to add extra space.Edit:
Actually, I've got a better idea than redefining
\centering
locally which just feels wrong. How about this:Bonus Question:
Here's one idea for getting a rule.
As an example of usage, here are a few grafs with the thick rule on the left (this example needs the
lipsum
package).For an
algorithmic
, the algorithm is already indented, so you can use the optional argument (or just redefine\coderulesep
).