更改浮动背景颜色

更改浮动背景颜色

背景

包括算法浮点中的图像。图像由批处理文件自动裁剪为合适的大小。

问题

在 PDF 的以下部分中,清单 1.1 在源代码右侧有很大空间[第一张图片]:

在此处输入图片描述

我希望实现的结果是[第二张图片]:

在此处输入图片描述

请注意,图像周围的上下线之间有少量空间,我也想将其删除。

代码

相关前言代码:

\definecolor{sourcecolour}{HTML}{F0F0F0}

% 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][H]{%
  \oldincludegraphics[width=\ScaleIfNeeded]{#2}%
  \graphicsalignment
}

% Change the background colour of algorithm boxes
\let\oldalgorithm\algorithm
\let\endoldalgorithm\endalgorithm
\renewenvironment{algorithm}[1][htbp]{
  \let\graphicsalignment\relax
  \oldalgorithm[#1]
}%
  {\endoldalgorithm}

% Centre graphics within non-Algorithm floats.
\let\graphicsalignment\centering

想法

将图像放在\colorbox

\colorbox{sourcecolour}{\parbox{\textwidth}{...}

这并没有像预期的那样起作用。它\colorbox在图像周围添加了自己的约 0.25em 边框,将右侧推入边距。此外,它还有一个副作用,就是关闭了 Figure 浮动的居中功能。(Figure 浮动居中,而显示源代码列表的 Algorithm 浮动左对齐。)

另一种可能性是不自动裁剪突出显示的源代码图像,但如果我改变书的宽度,我必须重新生成书的所有图像。我宁愿只填充空白处。

再试一次:

\setlength\fboxrule{0pt}
\setlength\fboxsep{0pt}

% Retain left-alignment, and change background colour of algorithm floats.
\let\oldalgorithm\algorithm
\let\endoldalgorithm\endalgorithm
\renewenvironment{algorithm}[1][htbp]{
  \let\graphicsalignment\relax
  \colorbox{sourcecolour}{\parbox{\textwidth}{%
  \oldalgorithm[#1]}}}%
  {\endoldalgorithm}

这会导致编译错误。

问题

序言中需要哪些 LaTeX 代码才能制作第一张图片类似第二张图片,而不影响论证?

答案1

查看color文档,它说\colorbox使用参数\fboxrule\fboxsep。也许可以尝试

\setlength\fboxrule{0pt}
\setlength\fboxsep{0pt}

在使用之前\colorbox

编辑:
对我来说这似乎有用。规则之间的空间不是由 增加的\colorbox,而是由规则的浮动样式增加的。一种可能性是设计一种新的浮动样式,然后使用\restylefloatfloat包中的方法来更改浮动样式algorithm。我没有这样做,而是添加了一些字距。

我越来越不相信这是做这些事情的正确方法。感觉我们只是在不断地使用 hack。我觉得这在一定程度上是由于使用了 LyX,但我对它毫无经验,所以我不确定。

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

% Change the background colour of algorithm boxes
\let\oldalgorithm\algorithm
\let\endoldalgorithm\endalgorithm
\renewenvironment{algorithm}[1][htbp]{
  \let\graphicsformat\justifiedandcolored
  \oldalgorithm[#1]
}%
  {\endoldalgorithm}

\def\justifiedandcolored#1{%
  \setlength\fboxrule{0pt}%
  \setlength\fboxsep{0pt}%
  \kern-2pt
  \colorbox{sourcecolour}{%
    \hbox to\linewidth{#1}%
  }%
  \par
  \kern-2pt
}

% Centre graphics within non-Algorithm floats.
\let\graphicsformat\centering

相关内容