Sphinx到Latex图像的放置

7
我正在尝试使用Sphinx生成latex和HTML手册,但是在latex中我遇到了有关图像位置的问题。在Sphinx中,我的图像如下所示:
.. figure:: _images/somepicture.png
    :figwidth: 100 %
    :width: 100 %
    :align: center

    some caption

这样,当它写入HTML时,数字跨越整个页面的宽度。这很好用。

问题出现在LaTeX中,LaTeX中的典型图像写作如下:

\begin{figure}[htbp]
\centering

\includegraphics[width=1.000\linewidth]{reset.png}
\end{figure}

问题在于[htbp]放置选项。由于图像长度为\linewidth,它们非常大,最终会漂移到下一页,并且通常文本和图片的顺序不会在pdf输出中保留。我想将[htbp]更改为[H]。
我发现了一个选项可以放入latex元素部分的conf.py文件中,称为“figure_align”,但是当我使用它时,它无效。链接在这里 http://sphinx.readthedocs.org/en/latest/config.html#options-for-latex-output 在我的conf.py文档中,我有以下内容:
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',

# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',

# Additional stuff for the LaTeX preamble.
#'preamble':'',

#Figure placement within LaTeX paper NOT WORKING
'figure_align': 'H'

}

我的问题是,为什么这个选项不能工作?我该怎么做才能让它工作?

H浮点修改器需要float包(http://www.ctan.org/pkg/float)`\usepackage{float}`,您认为它能有所帮助吗? 一般来说,你所说的“它不起作用”确切指什么(是否生成了错误等)? - Bertrand Caron
我也尝试将 '\usepackage{float}' 添加到导言部分,但同样没有成功。当我说 'it doesn't work' 时,我的意思是在写入 LaTeX 时没有任何错误或构建问题,但是当我查看 .tex 文件时,所有的图形仍然具有 [htbp] 选项,'figure_align' 元素并没有像我预期的那样修改它们。 - Alex
Python 中难道没有一些缓存机制可以解释为什么代码的更改在执行时没有反映出来(字节码等)吗? - Bertrand Caron
你尝试过在新构建之前使用make clean或先删除_build文件夹吗? - Cole
我之前尝试过在构建之前进行清理,但没有产生任何不同的结果。 - Alex
2个回答

2
当修改conf.py文件时,您可能忘记在'H'后面加逗号。
LaTex图形(浮动)对齐
'figure_align': 'H',
在sphinx-doc版本1.4.6上对我有效。
'figure_align'是LaTeX图形浮动对齐,默认为“htbp”(这里,顶部,底部,页面)。每当一个图像无法适应当前页面时,它将“浮动”到下一页,但可能会先于任何其他文本出现。如果您不喜欢此行为,请使用“H”,它将禁用浮动并严格按照它们在源中出现的顺序定位图形。请参考Sphinx-doc latex_element。

在字典中,最后一个元素后面的逗号是完全可选的。但是,将'figure_align': 'H'添加到我的conf.py文件的latex_elements字典中对我有用,与OP不同。从OP的回答中可以看出,这个特性是在较新版本的Sphinx中添加的。 - Bryce Guinta

0

我在这里找到了添加此功能的Pull Request: https://bitbucket.org/birkenfeld/sphinx/pull-request/227/latex-allow-alternative-float-options-for/diff

我查看了我的源代码,并发现我的sphinx版本在writers文件中没有包含'figure_align'这个latex元素。我从pull request中添加了代码,现在它可以工作了。

sphinx的“构建配置文件”文档中所述的版本(在这里找到)说明所有的latex元素选项都可在0.5或更高版本中使用,但似乎有些元素是在后来的版本中才添加的。我正在使用1.2.2版本,而'figure_align'不是一个有效的latex元素。

简而言之,我本可以升级到最新版本的sphinx,但我只是从pull request中添加了代码,现在它可以按预期工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接