Размещение фигуры сфинкса в латексе

Я пытаюсь использовать Sphinx для создания руководства в латексе и HTML, но у меня возникают проблемы с размещением фигур в латексе. В Sphinx мои цифры следующие:

.. figure:: _images/somepicture.png
    :figwidth: 100 %
    :width: 100 %
    :align: center

    some caption

Так что при записи в HTML цифры занимают всю ширину страницы. Это прекрасно работает.

Проблема возникает в латексе, где типичная фигура в латексе записывается как:

\begin{figure}[htbp]
\centering

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

Беда в варианте размещения [htbp]. Поскольку изображения имеют длину \ linewidth, они очень большие и в конечном итоге перемещаются на следующую страницу, и часто порядок текста и цифр в документе не сохраняется в выводе pdf. Я хочу изменить [htbp] на [H].

Я нашел возможность поместить в файл 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'

}

У меня вопрос: почему эта опция не работает и что я могу сделать, чтобы она работала?


person Alex    schedule 18.06.2014    source источник
comment
Для модификатора H float требуется пакет float (ctan.org/pkg/float) \usepackage{float}, выполните ты думаешь, это может помочь? В общем, что вы имеете в виду под it doesn't work (генерируются ли ошибки и т. Д.)?   -  person Bertrand Caron    schedule 18.06.2014
comment
Я также попытался добавить '\\ usepackage {float}' к элементу преамбулы, но тоже безуспешно. Под «это не работает» я имел в виду, что когда он пишет в LaTeX, в сборке нет ошибок или чего-либо еще, но когда я смотрю файл .tex, все фигуры по-прежнему имеют параметр [htbp], элемент 'figure_align' не изменил их, как я ожидал.   -  person Alex    schedule 18.06.2014
comment
Разве в Python нет механизмов кеширования, которые объясняли бы, почему ваши изменения в коде не отражаются на его выполнении (байтовый код и т. Д.)?   -  person Bertrand Caron    schedule 18.06.2014
comment
Вы пробовали либо make clean, либо сначала удалить папку _build перед новой сборкой?   -  person Cole    schedule 18.06.2014
comment
Я пробовал очистить перед постройкой, ничего другого не дало.   -  person Alex    schedule 18.06.2014


Ответы (2)


При изменении conf.py вы могли забыть запятую после "H".

Выравнивание латексной фигуры (поплавка)

'figure_align': 'H',

У меня работает на sphinx-doc версии 1.4.6.

'figure_align' Выравнивание фигур в латексе с плавающей запятой, по умолчанию «htbp» (здесь, вверху, внизу, на странице). Если изображение не помещается на текущей странице, оно «перемещается» на следующую страницу, но ему может предшествовать любой другой текст. Если вам не нравится такое поведение, используйте «H», который отключит плавающие и позиционирует фигуры строго в том порядке, в котором они появляются в исходном тексте. Справочный документ Sphinx-doc latex_element.

person zerocog    schedule 14.09.2016
comment
Запятая в последнем элементе dict не является обязательной. Однако добавление 'figure_align': 'H' к моему latex_elements dict в conf.py сработало для меня, в отличие от OP. Из ответа OP похоже, что эта функция была добавлена ​​в более новую версию Sphinx. - person Bryce Guinta; 05.02.2017

Я нашел здесь Pull Request, который добавил эту функцию: https://bitbucket.org/birkenfeld/sphinx/pull-request/227/latex-allow-alternative-float-options-for/diff

Я просмотрел свой исходный код и обнаружил, что моя версия sphinx не включает латексный элемент figure_align в файлах писателей. Я добавил код из запроса на перенос, и теперь он работает.

Версия, указанная в документации "файл конфигурации сборки" для sphinx (найдена здесь) заявляет, что все параметры латексных элементов доступны в версии 0.5 или новее, похоже, что некоторые из элементов были добавлены только в более поздних версиях sphinx. Я использую версию 1.2.2, и "figure_align" не является допустимым латексным элементом.

Короче говоря, я мог бы обновиться до последней версии sphinx, но я просто добавил код из запроса на перенос, и теперь он работает так, как задумано.

person Alex    schedule 24.06.2014