答案1
这并没有回答问题,因为据我所知,没有简单的方法可以完全像 OP 请求的那样实现目标。相反,我展示了两种不同的方法来尽可能好地实现目标。
据我所知,Shell 脚本和 LibreOffice 等 GUI 办公软件中的表格之间唯一易于访问的接口是.csv
-
逗号分隔值文件
这非常简单,但也非常基础,并且不允许任何格式化。以下是使用示例:
$ echo -e "heading 01,heading 02\ncell A2,cell B2\ncell A3,cell B3" >a.csv
$ loffice -o a.csv
由于是.csv
一个简单的文本文件,您可以使用每个编辑器更改其内容,让我们使用sed
:
$ sed -i 's/cell A2/replaced cell/' a.csv
$ loffice -o a.csv
如上所述,这不允许任何格式化此外全部大写,这在您的上下文中并不十分令人满意。
如果你一方面想要拥有可以使用命令行工具轻松更改的简单文本文件,但另一方面又想获得格式精美的文档,
乳胶是给你的
我将创建一个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}
编译后看起来像这样:
在脚本的开始处,只需创建一个唯一的输出文件名并复制模板:
outfile="/path/to/$(date +%F_%T).tex"
cp /path/to/template.tex "$outfile"
现在,您可以更改此文件并使其适应您的需要sed -i
,得益于注释中添加的线条标记,可以轻松选择单个单元格:
sed -i 's/.*%A2/ replaced cell value/' "$outfile"
完成所有更改后,只需运行pdflatex
文件.tex
即可获得.pdf
输出:
pdflatex "$outfile"