Quarto中Python表格固定位置求助:解决PDF表格浮动问题
解决Quarto中Pandas Styled DataFrame在PDF里浮动的问题
Quarto目前确实没有像fig-pos那样直接控制表格位置的tbl-pos参数,但可以通过两种方法实现固定表格位置:
方法一:手动用kable生成表格并指定位置
既然.style本质是转成kbl()格式,不如直接调用kable函数,通过position参数设置LaTeX表格的位置规则。比如用h!强制表格留在当前位置:
#| label: tbl-ohe_example #| tbl-cap: 'One-hot vectorization example' #| tbl-column: body import pandas as pd from knitr import kable df = pd.DataFrame( data = { 'Sentence': ['I like to eat apples', 'I like to eat bananas'], 'Tokens' : [['I', 'like', 'to', 'eat', 'apples'], ['I', 'like', 'to', 'eat', 'bananas']], 'Vector' : [[1, 1, 1, 1, 1, 0], [1, 1, 1, 1, 0, 1]], } ) # 用kable生成LaTeX表格,指定位置为h!(强制当前位置) kable(df, format="latex", position="h!", caption='One-hot vectorization example')
方法二:用LaTeX表格环境包裹Styled DataFrame
如果想继续使用.style的样式功能,可以在代码块前后添加LaTeX的table环境,手动指定位置参数:
\begin{table}[h!] \caption{One-hot vectorization example} \label{tbl-ohe_example}
#| echo: false #| tbl-column: body ( pd.DataFrame( data = { 'Sentence': ['I like to eat apples', 'I like to eat bananas'], 'Tokens' : [['I', 'like', 'to', 'eat', 'apples'], ['I', 'like', 'to', 'eat', 'bananas']], 'Vector' : [[1, 1, 1, 1, 1, 0], [1, 1, 1, 1, 0, 1]], } ) .style .hide_index() )
\end{table}
注意这里要把代码块里的tbl-cap和label移到LaTeX环境中,避免重复定义。
关于LaTeX位置参数的说明
h:尝试将表格放在当前位置h!:强制将表格放在当前位置(忽略LaTeX的浮动规则)t:放在页面顶部b:放在页面底部
可以根据需求选择合适的参数组合,比如ht!表示优先当前位置,其次页面顶部。
内容的提问来源于stack exchange,提问作者Bernardo
相关产品推荐
相关产品推荐

