Google docs 到 TeX 和 pdf shell 脚本生成一个空白的第一页,并给我一个“!LaTeX 错误:缺少 \begin{document}。”错误

Google docs 到 TeX 和 pdf shell 脚本生成一个空白的第一页,并给我一个“!LaTeX 错误:缺少 \begin{document}。”错误

我编写了一个 shell 脚本,Ubuntu 14.04(借鉴了google docs 作为团队编辑)获取 google docs 文件并将其转换为 LaTeX,使用 LaTeXmk 编译为 PDF,然后使用 evince 打开 pdf,如下所示:

#!/bin/bash

wget -O $2.tex "https://docs.google.com/document/export?format=txt&id=$1" &&    latexmk -pdf -f -interaction=nonstopmode $2.tex || evince $2.pdf

脚本的第一个参数$1是我想要从中抓取文本的文件的文件共享 id(我创建了 google doc 的可共享链接并从那里获取 id),第二个参数$2是我想要生成的文件的名称(不带文件扩展名)。

它运行正常,但不知为何会产生空白的第一页。它还会产生很多错误。不过,我怀疑空白的第一页是由以下错误导致的:

! LaTeX Error: Missing \begin{document}.

我的 google docs 文档最终生成了一个如下所示的 LaTeX 文件:

\documentclass{article} 
\begin{document}

I am the walrus.

\end{document}

这正是谷歌文档的样子。所以我不知道为什么它会抱怨\begin{document}我的文件中有一个缺失。毫不奇怪,由于编程技能很少甚至没有,我无法弄清楚为什么它会从第二页开始产生输出。所以我在这里,非常感谢任何帮助。

答案1

在 LaTeXmk 处理之前,我必须删除 BOM。我使用了此处的 BOM 剥离器脚本BOM 删除脚本,把它扔到/usr/local/bin中,并把我的脚本改如下:

#!/bin/bash

wget -O $2.tex "https://docs.google.com/document/export?format=txt&id=$1"; 
bom-remove.sh $2.tex; 
latexmk -pdf -f -interaction=nonstopmode $2.tex;
evince $2.pdf

现在它就可以正常工作了。要使用该脚本,我按名称调用它,在我的系统中它是“glatex”。在脚本名称后面,我输入了 google doc id,例如“1-JdNOZ_73GfRgsRF4u2pWc16HGze-VZKxMgjofTXf5k”,最后输入我想要调用的 LaTeX 文件和 pdf 文件的名称“filename”,脚本将使用输入 id 的 google doc 将其转换为 filename.tex 和 filename.pdf。

我喜欢这一点,因为我可以使用 Google Docs 进行编辑,使用它的协作能力和时间跟踪能力。然而,我使用自己的 LaTeX 环境进行编译。这真的是两全其美。

相关内容