Latex#

class astropy.io.ascii.Latex(ignore_latex_commands=['hline', 'vspace', 'tableline', 'toprule', 'midrule', 'bottomrule'], latexdict={}, caption='', col_align=None)[源代码]#

基类:BaseReader

Latex 格式表。

这个类实现了一些特定于LaTeX的命令。它的主要目的是以LaTeX可以编译的形式写出一个表。实现每个可能的LaTeX命令超出了类的范围,相反,重点是生成语法上有效的LaTeX表。

此类还可以读取简单的LaTeX表(每个表行一行,没有 \multicolumn 或类似的结构),具体来说,它可以读取它编写的表。读取时,它将查找Latex命令来开始和结束表格数据 (\begin{tabular}\end{tabular} ).这意味着这些行必须出现在输入文件中;好处是,该阅读器可以在包含文本、表格和图形的LaTeX文件上使用,并且它将读取第一个有效表格。

备注

Units in LaTeX tables

如果列信息中存在单位,LaTeX编写器将输出表中的单位::

>>> import io
>>> out = io.StringIO()
>>> import sys
>>> import astropy.units as u
>>> from astropy.table import Table
>>> t = Table({'v': [1, 2] * u.km/u.s, 'class': ['star', 'jet']})
>>> t.write(out, format='ascii.latex')
>>> print(out.getvalue())
\begin{table}
\begin{tabular}{cc}
v & class \\
$\mathrm{km\,s^{-1}}$ &  \\
1.0 & star \\
2.0 & jet \\
\end{tabular}
\end{table}

然而,它将无法读取包含单位的表格。在LaTeX中编写单位的方法太多了(用括号或方括号括起来,因为单独的行是列标题的一部分,使用纯文本、LaTeX符号等),因此不可能实现通用阅读器。如果您需要阅读带有单位的表格,则可以跳过阅读带有单位的行,而仅使用 data_start 参数用于设置出现数字数据值的第一行::

>>> Table.read(out.getvalue(), format='ascii.latex', data_start=4)
<Table length=2>
   v    class
float64  str4
------- -----
    1.0  star
    2.0   jet

或者,您可以通过扩展此类,使用您对这种情况下单位的确切格式的了解来编写自定义读取器。

读取 Latex 表时,可接受以下关键字:

ignore_latex_commands

以这些LaTeX命令开头的行将被视为注释(即忽略)。

在编写LaTeX表时,一些关键字可以自定义格式。这里必须小心,因为python解释 \\ 在字符串中作为转义符。若要将其传递到输出,请使用 r 说明符或使用双精度 \\\\ .

实例:

caption = r'My table \label{mytable}'
caption = 'My table \\\\label{mytable}'

最新信息 : Latex 输出的额外参数字典

  • 表格类型用于表的第一行和最后一行。

    默认值为 \\begin{{table}} . 下面将生成一个表,该表跨越两列文档中的整个页面:

    ascii.write(data, sys.stdout, format="latex",
                latexdict={'tabletype': 'table*'})
    

    如果 None ,表环境将被删除,只保留 tabular 环境。

  • 表格对齐表格在文本中的位置。

    默认情况下,不在文本中指定位置首选项。例如,如果 ht ,那么 Latex 就会 \\begin{{table}}[ht] .

  • col_align列对齐

    如果不是所有列都居中。

  • 字幕表格标题(字符串或字符串列表)

    这将出现在表上方,因为它是许多科学出版物的标准。如果您喜欢在表下面添加标题,只需将完整的LaTeX命令编写为 latexdict['tablefoot'] = r'\caption{{My table}}'

  • 前导码、报头开头、报头结尾、数据开头、数据结尾、桌脚:纯 Latex

    每个字符串都可以是字符串或字符串列表。这些字符串将被插入到表中,而不进行任何进一步的处理。请参阅下面的示例。

  • 单位弦乐词典

    此词典中的键应该是列的名称。如果存在,则会在LaTeX表中的列名正下方添加一行,其中包含字典的值。例子::

    from astropy.io import ascii
    data = {'name': ['bike', 'car'], 'mass': [75,1200], 'speed': [10, 130]}
    ascii.write(data, format="latex",
                latexdict={'units': {'mass': 'kg', 'speed': 'km/h'}})
    

    如果列在 units 字典,它默认为 unit 列的属性。如果未指定此属性(即,它为“无”),则单位将写为 ' ' .

运行以下代码以查看字典的每个元素在LaTeX表中的插入位置:

from astropy.io import ascii
data = {'cola': [1,2], 'colb': [3,4]}
ascii.write(data, format="latex", latexdict=ascii.latex.latexdicts['template'])

有些表格样式是在字典中预定义的 ascii.latex.latexdicts . 以下表格以A&A和其他一些日记账的首选样式生成:

ascii.write(data, format="latex", latexdict=ascii.latex.latexdicts['AA'])

例如,这将生成一个表,该表跨越所有列,并以页面为中心:

ascii.write(data, format="latex", col_align='|lr|',
            latexdict={'preamble': r'\begin{center}',
                       'tablefoot': r'\end{center}',
                       'tabletype': 'table*'})
caption设置表格标题

简称:

latexdict['caption'] = caption
col_align设置列对齐方式。

如果不存在,则将为居中列自动生成。简称:

latexdict['col_align'] = col_align

属性摘要

方法总结

write([table])

table 作为字符串列表。

属性文档

max_ndim: ClassVar[int | None] = None#

方法文件

write(table=None)[源代码]#

table 作为字符串列表。

参数:
桌子Table

输入表格数据。

返回:
lines : listPython :列表

ASCII表对应的字符串列表