You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:04:54