#!/bin/bash
PREAMBLE='\usepackage{fontspec}\setmonofont{Source Code Pro}\usepackage{xeCJK}\setCJKmonofont{Noto Sans Mono CJK SC}\pagestyle{empty}'
for f in "$@"; do
if [[ -s "$f" ]]; then
pygmentize -f tex -O "style=$STYLE,linenos,full,preamble=$PREAMBLE" $f \
| xelatex -jobname=$(basename $f) -output-directory=$SCRATCH
else
echo $ERR "Error: File <$f> not found." && exit 1
fi
[[ "$STYLE" = "default" ]] \
&& pdfcrop $SCRATCH/$(basename $f.pdf) $(basename $f | tr . -).pdf \
|| pdfcrop $SCRATCH/$(basename $f.pdf) $(basename $f | tr . -)-$STYLE.pdf
(( ALL == 1 )) \
&& { pygmentize -f tex -O "style=bw,linenos,full,preamble=$PREAMBLE" $f \
| xelatex -jobname=$(basename $f) -output-directory=$SCRATCH; \
pdfcrop $SCRATCH/$(basename $f.pdf) $(basename $f | tr . -)-bw.pdf; }
done
答案1
你有两个问题。首先,您似乎正在尝试编译格式错误的 LaTeX 文件。这些是 LaTeX 错误,与脚本本身无关:
! LaTeX Error: File `\def {\char `\\}.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name: ! Argument of \@firstofone has an extra }.
<inserted text>
\par
l.105 \AtBeginDocument
{ \xeCJK@document@hook }
?
! Emergency stop.
<inserted text>
\par
l.105 \AtBeginDocument
{ \xeCJK@document@hook }
为了弄清楚这些,您需要检查您的 LaTeX 代码。您可能想尝试将代码发布到https://tex.stackexchange.com/并在那里询问。
您收到的唯一 shell 错误是您似乎缺少命令:
./src2pdf.sh: line 65: pdfcrop: command not found
您正在尝试运行一个名为pdfcrop
但您的系统上不存在该命令。我不知道你正在运行什么操作系统,所以我不知道你如何找到它,但这就是你需要解决的问题。在Ubuntu上,该工具是texlive-extra-utils
该工具是软件包,所以如果你运行的是 Ubuntu,你可以尝试:
sudo apt install texlive-extra-utils
在 Arch 上,您可以在 AUR 上找到它作为 的一部分pdfcropmargins
,因此请尝试(替换trizen
为您首选的 AUR 管理器):
trizen -S pdfcropmargins