Gnuplot 可以使用 Pandoc 表作为数据吗?
Can Gnuplot use Pandoc tables as data?
我在不完整的 LaTeX 文件中使用的 Pandoc table 示例
-------------------------------------------------
File Byte Chars Lines
------- --------- ----------- ---------
009 24152000 24152000 72456000
001 24152000 24152000 72456000
000 24103840 24103840 72311520
0000 193360 193360 580080
0001 241520 241520 724560
0002 241520 241520 724560
-------------------------------------------------
Gnuplot 会接受
File Byte Chars Lines
009 24152000 24152000 72456000
001 24152000 24152000 72456000
000 24103840 24103840 72311520
0000 193360 193360 580080
0001 241520 241520 724560
0002 241520 241520 724560
我想直接从我的笔记中做 gnuplots。
如何使用不完整的 Pandoc tables 作为 gnuplot 的数据源?
如果存在一些选项,那就太好了,但我还没有找到。
看看Pandoc scripting。您必须编写一个脚本来匹配 pandoc 文档的 AST 中的所有 Table
节点,并生成 Gnuplot 可以读取的格式(csv 可能更容易生成)。
或者您可以使用 pandoc -t json
来获得 AST 的 JSON 表示并像那样编写脚本。使用当前的 Pandoc 版本 (1.14),您的 sample would produce 以下 JSON:
[
{
"unMeta": {}
},
[
{
"t": "Table",
"c": [
[],
[
{
"t": "AlignLeft",
"c": []
},
{
"t": "AlignLeft",
"c": []
},
{
"t": "AlignLeft",
"c": []
},
{
"t": "AlignLeft",
"c": []
}
],
[
0.15,
0.15,
0.2,
0.1125
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "File"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "Byte"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "Chars"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "Lines"
}
]
}
]
],
[
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "009"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "72456000"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "001"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "72456000"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24103840"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24103840"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "72311520"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "0000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "193360"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "193360"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "580080"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "0001"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "724560"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "0002"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "724560"
}
]
}
]
]
]
]
}
]
]
您可以使用 awk
通过以下命令删除空行和以至少 7 个破折号开头的行
awk '!/(^\s*$|^-{7,})/' data.dat
正则表达式匹配所有仅包含空格或至少以七个破折号开头的行。
您也可以使用
从 gnuplot 即时调用此命令
plot '< awk ''!/(^\s*$|^-{7,})/'' data.dat' skip 1
正则表达式周围的双单引号是您必须使用 gnuplot 在其他单引号内转义单引号的方式。使用单引号可以避免在正则表达式中转义反斜杠。
skip 1
忽略第一行。也许您想以其他方式使用它(例如用于密钥)。
我在不完整的 LaTeX 文件中使用的 Pandoc table 示例
-------------------------------------------------
File Byte Chars Lines
------- --------- ----------- ---------
009 24152000 24152000 72456000
001 24152000 24152000 72456000
000 24103840 24103840 72311520
0000 193360 193360 580080
0001 241520 241520 724560
0002 241520 241520 724560
-------------------------------------------------
Gnuplot 会接受
File Byte Chars Lines
009 24152000 24152000 72456000
001 24152000 24152000 72456000
000 24103840 24103840 72311520
0000 193360 193360 580080
0001 241520 241520 724560
0002 241520 241520 724560
我想直接从我的笔记中做 gnuplots。
如何使用不完整的 Pandoc tables 作为 gnuplot 的数据源? 如果存在一些选项,那就太好了,但我还没有找到。
看看Pandoc scripting。您必须编写一个脚本来匹配 pandoc 文档的 AST 中的所有 Table
节点,并生成 Gnuplot 可以读取的格式(csv 可能更容易生成)。
或者您可以使用 pandoc -t json
来获得 AST 的 JSON 表示并像那样编写脚本。使用当前的 Pandoc 版本 (1.14),您的 sample would produce 以下 JSON:
[
{
"unMeta": {}
},
[
{
"t": "Table",
"c": [
[],
[
{
"t": "AlignLeft",
"c": []
},
{
"t": "AlignLeft",
"c": []
},
{
"t": "AlignLeft",
"c": []
},
{
"t": "AlignLeft",
"c": []
}
],
[
0.15,
0.15,
0.2,
0.1125
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "File"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "Byte"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "Chars"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "Lines"
}
]
}
]
],
[
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "009"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "72456000"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "001"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24152000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "72456000"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24103840"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "24103840"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "72311520"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "0000"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "193360"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "193360"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "580080"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "0001"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "724560"
}
]
}
]
],
[
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "0002"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "241520"
}
]
}
],
[
{
"t": "Plain",
"c": [
{
"t": "Str",
"c": "724560"
}
]
}
]
]
]
]
}
]
]
您可以使用 awk
通过以下命令删除空行和以至少 7 个破折号开头的行
awk '!/(^\s*$|^-{7,})/' data.dat
正则表达式匹配所有仅包含空格或至少以七个破折号开头的行。
您也可以使用
从 gnuplot 即时调用此命令plot '< awk ''!/(^\s*$|^-{7,})/'' data.dat' skip 1
正则表达式周围的双单引号是您必须使用 gnuplot 在其他单引号内转义单引号的方式。使用单引号可以避免在正则表达式中转义反斜杠。
skip 1
忽略第一行。也许您想以其他方式使用它(例如用于密钥)。