带有 ROOT 内核的 nbconvert 在降价中导出无名图
Posted
技术标签:
【中文标题】带有 ROOT 内核的 nbconvert 在降价中导出无名图【英文标题】:nbconvert with ROOT kernel exports nameless plots in markdown 【发布时间】:2016-08-27 13:59:09 【问题描述】:我正在使用 nbconvert v4 将 jupiter 笔记本导出为 pdf。我的笔记本使用 ROOT C++ 内核,我设法导出它的唯一方法是通过降价。 我将笔记本转储到markdown,然后使用pandoc将其导出为pdf。
我唯一的问题是我通过笔记本中的代码创建绘图,因此我的降价文件包含自动生成的 png 文件。
当我使用 pandoc 时,这些文件会变成图形,并且由于某种原因,图形的标题总是“png”。
我运行命令:
jupyter nbconvert --to markdown my_file.ipynb
pandoc --toc --template=../Scripts/mdtemplate.tex my_file.md --latex-engine=pdflatex -o final.pdf
我在网上找到了我使用的模板:
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$endif$$for(classoption)$$classoption$$sep$,$endfor$]$documentclass$
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]$fontfamily$
$else$
\usepackagelmodern
$endif$
$if(linestretch)$
\usepackagesetspace
\setstretch$linestretch$
$endif$
\usepackagegeometry
\geometry
a4paper,
total=170mm,257mm,
left=20mm,
top=25mm,
bottom=25mm,
right=20mm,
\usepackageamssymb,amsmath
\usepackageifxetex,ifluatex
\usepackagefixltx2e % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]fontenc
\usepackage[utf8]inputenc
$if(euro)$
\usepackageeurosym
$endif$
\else % if luatex or xelatex
\ifxetex
\usepackagemathspec
\else
\usepackagefontspec
\fi
\defaultfontfeaturesLigatures=TeX,Scale=MatchLowercase
$if(euro)$
\newcommand\euro€
$endif$
$if(mainfont)$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]$mainfont$
$endif$
$if(sansfont)$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]$sansfont$
$endif$
$if(monofont)$
\setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]$monofont$
$endif$
$if(mathfont)$
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]$mathfont$
$endif$
$if(CJKmainfont)$
\usepackagexeCJK
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]$CJKmainfont$
$endif$
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExistsupquote.sty\usepackageupquote
% use microtype if available
\IfFileExistsmicrotype.sty%
\usepackagemicrotype
\UseMicrotypeSet[protrusion]basicmath % disable protrusion for tt fonts
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]geometry
$endif$
\usepackagehyperref
$if(colorlinks)$
\PassOptionsToPackageusenames,dvipsnamescolor % color is loaded by hyperref
$endif$
\hypersetupunicode=true,
$if(title-meta)$
pdftitle=$title-meta$,
$endif$
$if(author-meta)$
pdfauthor=$author-meta$,
$endif$
$if(keywords)$
pdfkeywords=$for(keywords)$$keywords$$sep$; $endfor$,
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
$else$
pdfborder=0 0 0,
$endif$
breaklinks=true
\urlstylesame % don't use monospace font for urls
$if(lang)$
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]babel
$if(babel-newcommands)$
$babel-newcommands$
$endif$
\else
\usepackagepolyglossia
\setmainlanguage[$polyglossia-lang.options$]$polyglossia-lang.name$
$for(polyglossia-otherlangs)$
\setotherlanguage[$polyglossia-otherlangs.options$]$polyglossia-otherlangs.name$
$endfor$
\fi
$endif$
$if(natbib)$
\usepackagenatbib
\bibliographystyle$if(biblio-style)$$biblio-style$$else$plainnat$endif$
$endif$
$if(biblatex)$
\usepackage$if(biblio-style)$[style=$biblio-style$]$endif$biblatex
$if(biblatexoptions)$\ExecuteBibliographyOptions$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$$endif$
$for(bibliography)$
\addbibresource$bibliography$
$endfor$
$endif$
$if(listings)$
\usepackagelistings
$endif$
$if(lhs)$
\lstnewenvironmentcode\lstsetlanguage=Haskell,basicstyle=\small\ttfamily
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(verbatim-in-note)$
\usepackagefancyvrb
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(tables)$
\usepackagelongtable,booktabs
$endif$
$if(graphics)$
\usepackagegraphicx,grffile
\makeatletter
\def\maxwidth\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi
\def\maxheight\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]
\setkeysGinwidth=\maxwidth,height=\maxheight,keepaspectratio
$endif$
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\renewcommand\href[2]#2\footnote\url#1
$endif$
$if(strikeout)$
\usepackage[normalem]ulem
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands\renewcommand\sout
$endif$
$if(indent)$
$else$
\IfFileExistsparskip.sty%
\usepackageparskip
% else
\setlength\parindent0pt
\setlength\parskip6pt plus 2pt minus 1pt
$endif$
\setlength\emergencystretch3em % prevent overfull lines
\providecommand\tightlist%
\setlength\itemsep0pt\setlength\parskip0pt
$if(numbersections)$
\setcountersecnumdepth5
$else$
\setcountersecnumdepth0
$endif$
$if(subparagraph)$
$else$
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand\paragraph[1]\oldparagraph#1\mbox
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand\subparagraph[1]\oldsubparagraph#1\mbox
\fi
$endif$
$if(dir)$
\ifxetex
% load bidi as late as possible as it modifies e.g. graphicx
$if(latex-dir-rtl)$
\usepackage[RTLdocument]bidi
$else$
\usepackagebidi
$endif$
\fi
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\TeXXeTstate=1
\newcommand\RL[1]\beginR #1\endR
\newcommand\LR[1]\beginL #1\endL
\newenvironmentRTL\beginR\endR
\newenvironmentLTR\beginL\endL
\fi
$endif$
$for(header-includes)$
$header-includes$
$endfor$
$if(title)$
\title$title$$if(thanks)$\thanks$thanks$$endif$
$endif$
$if(subtitle)$
\providecommand\subtitle[1]
\subtitle$subtitle$
$endif$
$if(author)$
\author$for(author)$$author$$sep$ \and $endfor$
$endif$
$if(institute)$
\institute$for(institute)$$institute$$sep$ \and $endfor$
$endif$
\date$date$
\begindocument
$if(title)$
\maketitle
$endif$
$if(abstract)$
\beginabstract
$abstract$
\endabstract
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
$if(colorlinks)$
\hypersetuplinkcolor=$if(toccolor)$$toccolor$$else$black$endif$
$endif$
\setcountertocdepth$toc-depth$
\tableofcontents
$endif$
$if(lot)$
\listoftables
$endif$
$if(lof)$
\listoffigures
$endif$
$body$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(book-class)$
\renewcommand\bibname$biblio-title$
$else$
\renewcommand\refname$biblio-title$
$endif$
$endif$
\bibliography$for(bibliography)$$bibliography$$sep$,$endfor$
$endif$
$endif$
$if(biblatex)$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\enddocument
任何想法如何在 nbconvert 或 Pandoc 中设置标题名称?错误可能出在哪里?
附:如果有帮助,我还会在此处附上标题的屏幕截图。 它是由代码产生的:
TCanvas canvas_2("c", "c");
TF1 f1("f1","sin(x)/x",0.,10.);
f1.Draw();
canvas_2.Draw();
【问题讨论】:
【参考方案1】:看来我找到了答案。为了使图像获得 pdf 和 html 格式的名称,必须在产生它们的代码单元中添加元数据,然后在 template.tpl 文件中使用它们来命名图像。
我在网上某处找到了这个解决方案,但我似乎无法再次找到它。如果它对任何人有用,我可以发布一个示例。
【讨论】:
以上是关于带有 ROOT 内核的 nbconvert 在降价中导出无名图的主要内容,如果未能解决你的问题,请参考以下文章
使用带有降价的嵌套@components的Laravel Mail问题
发送后显示带有降价的 Laravel 通知(MailMessage)
安装 MikTex、pandoc 和 nbconvert 后将 Jupyter Notebook 转换为 PDF 时出错