我有一些.rst文件,我使用标准的sphinx转换器将它们转换为.tex文件。
在某些情况下,我有一些特殊宽度的表格,如:
.. list-table::
:widths: 50 50
生成的.tex始终包含以下表格:
\begin{tabulary}{\textwidth}{|L|L|}
因此,列宽会丢失。
如何在将rst转换为乳胶时保留色谱柱宽度?
我也使用了逗号分隔符,
.. list-table::
:widths: 50 , 50
:header-rows: 1
* - SETTING
- DESCRIPTION
* - Enable
- Enables or disables internal tracing.
* - Verbose
- Enables or disables extended internal tracing.
但它不起作用..也许我使用了一个坏的转换器?你推荐什么转换器?
答案 0 :(得分:13)
实际上是命令
.. tabularcolumns:: |p{4.5cm}|p{8.5cm}|
在... list-table :: 之前需要
http://sphinx.pocoo.org/markup/misc.html?highlight=tabularcolumns#dir-tabularcolumns
答案 1 :(得分:1)
尝试:
:widths: 50, 50
使用逗号分隔符。
输出还取决于第一次写入表的方式。
我假设您使用的是标准的rst表语法,而不是使用项目符号列表创建表格(尽可能)。如需更多帮助,请尝试http://docutils.sourceforge.net/docs/ref/rst/directives.html#tables
此外,如果50, 50
是列宽,则乳胶代码应如下所示:
\begin{tabulary}{ 1\textwidth}{ | p{0.5} | p{0.5} | }
和
\begin{tabulary}{total width of table}{| column width| column width|}
答案 2 :(得分:0)
docutils rst2latex编写器对表有一些问题:http://docutils.sourceforge.net/docs/dev/todo.html#tables,所以也许你的问题与此有关?我认为Sphinx作家基于rst2latex,因此可能会遇到同样的问题。
答案 3 :(得分:0)
我可以证实这一点:
.. list-table::
:widths: 10 40 50
* - Module
- Link
- Description
适用于rst2latex
\setlength{\DUtablewidth}{\linewidth}
\begin{longtable*}[c]{|p{0.104\DUtablewidth}|p{0.375\DUtablewidth}|p{0.465\DUtablewidth}|}
\hline
Module
&
Link
&
Description
\\
\hline
但是使用狮身人面像,我会得到OP所提供的内容。所以我不会收集rst2latex问题。
文档所说的“自动”宽度对我来说也不是很有用,链接往往会流血。
答案 4 :(得分:0)
由于我有大量文档,我试图修复胶乳生成。另外,我认为第一个文件中的Latex表示法是一个缺点,因为它不一致,需要编辑部分学习一种敏感的标记语言。
我用自己的版本替换了LaTeXTranslator.depart_table。我复制了原来的depart_table并添加了这段代码(缩短了):
def my_depart_table (self, node):
totalColwidth = 0
givenColwidth = []
hasColwidth = False
for tgroup in node:
for tableColspec in tgroup:
try:
if tableColspec.has_key('colwidth'):
totalColwidth += tableColspec['colwidth']
givenColwidth.append(tableColspec['colwidth'])
hasColwidth = True
except:
print "colspec missing. \n"
# original code
if hasColwidth:
colspec = ""
for thisColwidth in givenColwidth:
colspec += ('>{\RaggedRight}p{%.3f\\linewidth}' % (0.95 * thisColwidth / totalColwidth))
#print "using widths: %.3f %s %s" % ((0.95 * thisColwidth / totalColwidth), thisColwidth, totalColwidth)
self.body.append('{' + colspec + '}\n')
# more original code
LaTeXTranslator.depart_table = my_depart_table
我既不精通Python也不精通Sphinx,所以请自担风险。我希望你能得到这个想法,甚至可以给出建议。
如果您使用Python< 3.0并希望完全删除因子0.95,记住要么将其中一个整数转换为浮点数,要么从__ future __中导入除法。