如何从命令行生成简洁的演示文稿?

Hel*_*bie 3 command-line scripts libreoffice

我为 Ubuntu 终端创建了一个生成答案的脚本。答案将复制到 LibreOffice Writer 文档中。有表格和所需的格式。如果我覆盖,所有格式都会丢失,如果我不先输出,我将无法追加。我可以在表格中自动插入答案吗?

我只有简单的代码,比如cat hostname预览机器主机名。我正在努力复制和粘贴。我只想知道是否可以在 LibreOffice Writer 文档的表格中自动引导答案。下面上传了示例 ODT 模板。

示例模板

des*_*ert 5

这并不能回答问题,因为 AFAIK 没有简单的方法可以像 OP 请求一样实现目标。相反,我展示了两种不同的方法来尽可能地实现目标。

据我所知,在像 LibreOffice 这样的 GUI 办公软件中,shell 脚本和表格之间唯一易于访问的界面是.csv——

逗号分隔值文件

这非常简单,但也非常基本,并且不允许进行任何格式化。这是一个使用示例:

$ echo -e "heading 01,heading 02\ncell A2,cell B2\ncell A3,cell B3" >a.csv
$ loffice -o a.csv
Run Code Online (Sandbox Code Playgroud)

LibreOffice csv 01

由于 a.csv是一个简单的文本文件,您可以使用每个编辑器更改内容,让我们使用sed

$ sed -i 's/cell A2/replaced cell/' a.csv 
$ loffice -o a.csv
Run Code Online (Sandbox Code Playgroud)

LibreOffice csv 02

如上所述,除了all caps之外,这不允许任何格式,这在您的上下文中不是很令人满意。


如果您一方面想要拥有简单的文本文件,您可以使用命令行工具轻松更改,但另一方面又想要获得格式精美的文档,

LaTeX适合你

我会创建一个template.tex并标记我稍后想用 LaTeX 忽略的注释更改的行,例如像这样的单元格坐标%A2

\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage{multicol}
\begin{document}
\begin{tabular}{p{5cm}p{5cm}}
  \toprule
  \multicolumn{2}{l}{System/Client Information} \\
  \midrule
  {\tiny Machine Hostname:}\newline
  dessert's plowhorse %A2
  &
  {\tiny Machine Brand and Model:}\newline
  Thinkpad X240 %B2
  \\
  {\tiny Operating System (Version \& Variant):}\newline
  Lubuntu 16.04.3 LTS %A3
  &
  {\tiny Kernel Version\,/\,Update Level:}\newline
  4.10.0-35-generic %B3
  \\
  \bottomrule
\end{tabular}
\end{document}
Run Code Online (Sandbox Code Playgroud)

编译后看起来像:

乳胶示例 01

在脚本的开头,您只需创建一个唯一的输出文件名并复制模板:

outfile="/path/to/$(date +%F_%T).tex"
cp /path/to/template.tex "$outfile"
Run Code Online (Sandbox Code Playgroud)

现在您可以更改此文件并使用 调整它以满足您的需要sed -i,由于在注释中添加了行标记,因此可以轻松选择单个单元格:

sed -i 's/.*%A2/  replaced cell value/' "$outfile"
Run Code Online (Sandbox Code Playgroud)

完成所有更改后,只需pdflatex.tex文件上运行即可获得.pdf输出:

pdflatex "$outfile"
Run Code Online (Sandbox Code Playgroud)

乳胶示例 02

一些开始使用 LaTeX 的链接