在将nb转换为LaTeX文件时,有没有办法从IPython笔记本中的代码更改为颜色? 我想更改默认情况下的绿色和蓝色
我正在尝试(在.tplx
文件中)
((* block definitions *))
((( super() )))
% Custom prompts colors
\definecolor{incolor}{rgb}{0.0, 0.2, 0.0}
\definecolor{outcolor}{rgb}{0.3, 0.3, 0.0}
\definecolor{blue}{rgb}{0.5,0.,.698} % does not seem to work
((* endblock definitions *))
但我不知道如何改变其他颜色
答案 0 :(得分:2)
要更改In
和Out
提示的颜色,您可以使用自定义模板,与您的尝试非常相似。使用以下内容创建文件(colors.tplx):
((*- extends 'article.tplx' -*))
((* block definitions *))
((( super() )))
\definecolor{incolor}{rgb}{0.8, 0.0, 0.0}
\definecolor{outcolor}{rgb}{0.9, 0.3, 0.70}
((* endblock definitions *))
当然,您必须根据需要调整提示的颜色。要使用此模板,请致电ipython nbconvert --to pdf --template colors.tplx file.ipynb
。
请注意,语法突出显示不会受到这种影响。
最终pdf中的语法高亮显示基于pygments。默认着色在LatexPreprocessor中进行了硬编码(请参阅here)。要获得不同的样式,必须使用自定义预处理器。可能的预处理器是当前LatexPreprocessor的一个小修改,可能看起来像(prelatex.py)
from __future__ import print_function, absolute_import
from IPython.nbconvert.preprocessors.base import Preprocessor
class MyLatexPreprocessor(Preprocessor):
def preprocess(self, nb, resources):
# Generate Pygments definitions for Latex
from pygments.formatters import LatexFormatter
resources["latex"]["pygments_definitions"] = LatexFormatter(style='emacs').get_style_defs()
return nb, resources
此处使用 emacs 样式。这是有效的,因为默认的LatexPreprocessor将pygments语法颜色定义存储在资源dict中,稍后将其粘贴到生成的.tex文件中。我们的自定义预处理器在默认值之后执行,并重新定义颜色定义。
要启用此预处理器,必须创建自定义配置。这就像创建像
这样的文件(custom_cfg.py)一样简单c = get_config()
c.Exporter.preprocessors = ['prelatex.MyLatexPreprocessor']
将这两个文件放在工作目录中,nbconvert调用看起来像
ipython nbconvert --to latex --config custom_cfg.py file.ipynb
要获取可用样式的列表,可以使用以下代码段。
from pygments.styles import get_all_styles
list(get_all_styles())
在我的机器上,我得到了 ['vs','pastie','borland','friendly','emacs','vim','native','perldoc','monokai','trac','tango','murphy','默认','多彩','manni','bw','rrt','秋天','果味']
结合两种方法,即自定义模板和自定义预处理器生成的pdf可能如下所示:
您可以在this slightly outdated blog和this question中找到更多信息。
顺便说一下。我使用了ipython 3.0-dev(8d6041b)