Ale*_*P21 11 python latex restructuredtext python-sphinx
我需要创建一个宽表,如下面的例子,它将在乳胶中呈现后覆盖整个pdf页面.
我遇到的问题是列标题文本没有换行以适合列的宽度.
+----------+--------------------------------+------------------------+----------+----------+----------+----------+----------+
| Header 1 | Long Header 2 that should wrap | Common column Header 3 | Header 4 | Header 5 | Header 6 | Header 7 | Header 8 |
| | +-----------+------------+ | | | | |
| | | Header 3a | Header 3b | | | | | |
+==========+================================+===========+============+==========+==========+==========+==========+==========+
| Value 1 | Value 2 does actually wrap | Value 3a | Value 3b | Value 4 | Value 5 | Value 6 | Value 7 | Value 8 |
+----------+--------------------------------+-----------+------------+----------+----------+----------+----------+----------+
Run Code Online (Sandbox Code Playgroud)
显示如下:

我已经尝试使用该.. tabularcolumns:: |p{0.1 \textwidth|...指令调整列宽,但它似乎没有修复侵入标题文本问题.
如果我删除"Common column Header 3"(下面的第二个例子),我得到了所需的包装头文本行为,所以我猜这个部分我做错了:
+----------+--------------------------------+-----------+------------+----------+----------+----------+----------+----------+
| Header 1 | Long Header 2 that should wrap | Header 3a | Header 3b | Header 4 | Header 5 | Header 6 | Header 7 | Header 8 |
| | | | | | | | | |
| | | | | | | | | |
+==========+================================+===========+============+==========+==========+==========+==========+==========+
| Value 1 | Value 2 does actually wrap | Value 3a | Value 3b | Value 4 | Value 5 | Value 6 | Value 7 | Value 8 |
+----------+--------------------------------+-----------+------------+----------+----------+----------+----------+----------+
Run Code Online (Sandbox Code Playgroud)
看起来像这样:

任何帮助将不胜感激!
这不是一个完美的解决方案,但您应该能够使用换行符|(管道和2个空格)手动强制文本到下一行,如下所示:
+---------------------------
| | Header | | Header |
| | 1 | | 2 |
+==============+===========+
| value 1 | value 2 |
+--------------+-----------+
Run Code Online (Sandbox Code Playgroud)
小智 3
multirow这个问题与 LaTeX包的使用方式有关。Sphinx 产生这种标记:
...&\\multirow{2}{*}{\\relax \\sphinxstylethead{\\relax \n Long Header 2 that should wrap\n \\unskip}\\relax \\unskip}\\relax &...\nRun Code Online (Sandbox Code Playgroud)\n\n但multirow文档说这*表明要使用the text parameter\xe2\x80\x99s natural width,我不知道,但这可能与tabulary表格的渲染效果不佳。另一种方法是指示一个显式宽度,Sphinx 通常无法猜测该宽度:但是在存在 的情况下它可能可以,..tabularcolumns因为它将具有信息。
multirow是旧包,但最近在 2016 年 9 月进行了更新,为该参数v2.0引入了新的可能性=
\n\n\n指示
\n\\multirow应使用设置条目的列的指定宽度。
我尝试手动插入=而不是*它修复了您的第一个示例。由于 Sphinx LaTeX writer 似乎总是\\multirow与 一起使用{*},我可以提出这个 hack。放入你的conf.py
latex_elements = {\n \'preamble\': r\'\\let\\oldmultirow\\multirow\\def\\multirow#1#2{\\oldmultirow{#1}{=}}\',\n }\nRun Code Online (Sandbox Code Playgroud)\n\n并确保您使用的是完全更新的 TeX 安装,因为您需要 multirow 2.0。这意味着您需要最新的 TeXLive 2016 或 Windows 上的 MikTeX。
\n\nSphinx 可以考虑使用=,但这仅适用于安装了最新 TeX 的用户。也许有更好的方法,但是这个方法对我来说适用于你的示例 1(不需要..tabularcolumns::指令),在 a4 纸上和 Sphinx 1.5.2 上。(表格比文字线宽长)
| 归档时间: |
|
| 查看次数: |
877 次 |
| 最近记录: |