问题:带有R的Jupyter无法转换为PDF。 原因:在乳胶转换阶段没有转义%符号。 我有一个解决方案,但我希望有更好/更容易/更永久的东西。
我以更简单的形式重新创建了我的问题,以便更好地突出显示它。基本上,我在Jupyter中运行以下命令(使用R内核):
description <- data.frame("variable"= c("female",
"phsrank",
"BA"),
"label" = c("=1 if female",
"% high school rank",
"=1 if Bachelor's degree"))
description
这将输出下表:
variable label
1 female =1 if female
2 phsrank % high school rank
3 BA =1 if Bachelor's degree
然后我将笔记本保存为Breaking_pdf_R.ipynb,然后选择文件&gt;下载为&gt; PDF通过LaTeX。将打开一个新的浏览器窗口,其中包含以下内容:
500:内部服务器错误
错误是:
nbconvert failed: PDF creating failed
接下来,我尝试了命令行:
ipython nbconvert --to pdf Breaking_pdf_R.ipynb
输出中出现了乳胶错误:
LaTeX Warning: No \author given.
! Extra alignment tab has been changed to \cr.
<recently read> \endtemplate
l.242 3 &
BA & =1 if Bachelor's degree\\
?
! Emergency stop.
<recently read> \endtemplate
l.242 3 &
BA & =1 if Bachelor's degree\\
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on notebook.log.
接着是错误:
raise RuntimeError("PDF creating failed")
RuntimeError: PDF creating failed
由于乳胶问题,pdf转换失败。我可以使用以下命令将.ipybn文件转换为.tex:
ipython nbconvert --to latex Breaking_pdf_R.ipynb
查看乳胶代码,我注意到表格输出(对于数据框)有一个未转义的%。因为%用于乳胶中的评论,所以这会使表格污染。
\begin{tabular}{r|ll}
& variable & label\\
\hline
1 & female & =1 if female\\
2 & phsrank & % high school rank\\
3 & BA & =1 if Bachelor's degree\\
\end{tabular}
我将百分比转换(将%更改为\%),然后使用pdflatex转换文件(使用Texmaker),最后pdf成功,我有一张漂亮的桌子。
我想知道是否有更好的解决方法,而不是必须完成上述所有步骤,并尝试解释错误。
作为旁注,我发现这只是R的一个问题。当我使用Python在Jupyter中执行等效代码时,我在pdf输出中得到一个更丑陋的表(因为它不使用表格在乳胶中,与R示例不同,但%会自动转义。
使用Jupyter和Python内核:
import pandas as pd
description = pd.DataFrame({"variable": ["female",
"phsrank",
"BA"],
"label" : ["=1 if female",
"% high school rank",
"=1 if Bachelor's degree"]})
description
输出:
label variable
0 =1 if female female
1 % high school rank phsrank
2 =1 if Bachelor's degree BA
ipython nbconvert --to pdf Breaking_pdf_py.ipynb
以上工作正常(Breaking_pdf_py.ipynb是我的Jupyter python文件)。