Как изменить размер шрифта примера кода в выводе LaTeX PDF с помощью sphinx?
Я нахожу шрифт примера кода по умолчанию в PDF, сгенерированном sphinx, слишком большим.
Я попытался испачкать руки в сгенерированном .файл Tex вставки команд размер шрифта как tiny
над кодовыми блоками, но это просто делает строку над кодовым блоком крошечной, а не сам кодовый блок.
Я не уверен, что еще делать - я абсолютный новичок с LaTeX.
3 ответов
я понял. Pygments использует \begin{Verbatim}
блок для обозначения фрагментов кода, который использует fancyvrb
пакета. The документация, которую я нашел (предупреждение: PDF) упоминает formatcom
опция для блока verbatim.
устройстве' источник latex writer указывает переменную экземпляра,verboptions
, прикрепляется к концу каждого дословного блока и Сфинкса'латекс мост можно заменить на LatexFormatter
.
в верхней части моего conf.py
файл, я добавил следующее:
from sphinx.highlighting import PygmentsBridge
from pygments.formatters.latex import LatexFormatter
class CustomLatexFormatter(LatexFormatter):
def __init__(self, **options):
super(CustomLatexFormatter, self).__init__(**options)
self.verboptions = r"formatcom=\footnotesize"
PygmentsBridge.latex_formatter = CustomLatexFormatter
\footnotesize
было мое предпочтение, но список размеров доступны здесь
чтобы изменить параметры вывода Latex в sphinx, установите соответствующий latex_elements
ключ в файле конфигурации сборки, документация по этому находится здесь.
чтобы изменить размер шрифта для всех шрифтов, используйте pointsize
.
Е. Г.
latex_elements = {
'pointsize':'10pt'
}
чтобы изменить другие параметры Latex, перечисленные в documetntation, используйте preamble
или используйте пользовательский класс документа в latex_documents
.
Е. Г.
mypreamble='''customlatexstuffgoeshere
'''
latex_elements = {
'papersize':'letterpaper',
'pointsize':'11pt',
'preamble':mypreamble
}
читать Сфинкса исходный код по умолчанию код LatexWriter устанавливает фрагменты кода в \code
латекс примитивно.
так что вы хотите сделать, это заменить \code
С подходящей замены.
это делается путем включения команды Latex, такой как \newcommand{\code}[1]{\texttt{\tiny{#1}}}
либо как часть преамбулы, либо как часть пользовательского класса документа для sphinx, который устанавливается в latex_documents
как ключ documentclass. Доступен пример класса документов sphinx здесь.
кроме как просто сделать его меньше с \tiny
вы можете изменить latex_documents
класс документа или latex_elements
преамбула для использования списков пакетов Latex для более причудливого форматирования кода, как в вопросе StackOverflow здесь.
материал пакета из связанного сообщения будет идти как пользовательский класс документа и переопределение, подобное \newcommand{\code}[1]{\begin{lstlisting} #1 \end{lstlisting}}
будет частью преамбулы.
альтернативно вы могли бы напишите расширение sphinx, которое расширяет LaTeX writer по умолчанию с помощью пользовательского latex writer по вашему выбору, хотя это значительно больше усилий.
другие соответствующие вопросы StackOverflow включают
вы можете добавить измененную команду Verbatim в преамбулу (обратите внимание, что в этом случае размер шрифта изменен на tiny)
\renewcommand{\Verbatim}[1][1]{%
% list starts new par, but we don't want it to be set apart vertically
\bgroup\parskip=0pt%
\smallskip%
% The list environement is needed to control perfectly the vertical
% space.
\list{}{%
\setlength\parskip{0pt}%
\setlength\itemsep{0ex}%
\setlength\topsep{0ex}%
\setlength\partopsep{0pt}%
\setlength\leftmargin{10pt}%
}%
\item\MakeFramed {\FrameRestore}%
\tiny % <---------------- To be changed!
\OriginalVerbatim[#1]%
}