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
作为字符串列表。属性文档
方法文件