使用nbconvert导出Jupyter Notebook为PDF时表格无法适配页面的解决方法
解决Jupyter Notebook导出PDF时表格列显示不全的问题
下面是几种实用的解决办法:
给表格添加自适应样式
如果是用pandas生成的表格,直接通过Styler给表格加CSS规则,让内容自动换行、表格占满页面宽度:import pandas as pd # 假设df是你的数据框 styled_df = df.style.set_table_styles([ {'selector': 'table', 'props': [('width', '100%'), ('table-layout', 'fixed')]}, {'selector': 'td', 'props': [('word-wrap', 'break-word')]} ]) styled_df也可以在Notebook的Markdown单元格里插入全局CSS,对所有表格生效:
<style> table { width: 100% !important; table-layout: fixed !important; } td { word-wrap: break-word !important; } </style>用自定义LaTeX模板缩放表格
nbconvert转PDF依赖LaTeX,我们可以自定义模板让表格自动缩放到页面宽度:- 新建一个
custom.tplx文件,内容如下:
((*- extends 'article.tplx' -*)) ((* block table *)) \begin{table}[H] \centering \resizebox{\textwidth}{!}{ ((( super() ))) } \end{table} ((* endblock table *))- 导出时指定这个模板:
jupyter nbconvert file_name.ipynb --no-input --to=pdf --template=custom.tplx- 新建一个
切换为横向页面布局
要是表格实在太宽,直接把PDF页面改成横向:
要么用命令行参数指定:jupyter nbconvert file_name.ipynb --no-input --to=pdf --PDFExporter.latex_command="xelatex -V --no-pdf - '\documentclass[landscape]{article} \input{input.tex}'"要么在Notebook里加Raw单元格,给表格单独设置横向:
表格前的Raw单元格:\usepackage{pdflscape} \begin{landscape}表格后的Raw单元格:
\end{landscape}
内容的提问来源于stack exchange,提问作者Bedi Egilmez
相关产品推荐
相关产品推荐

