#!/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
2つの質問があります。まず、間違った形式の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/そしてそこに尋ねてください。
あなたが得る唯一のシェルエラーは、コマンドが欠落しているようです。
./src2pdf.sh: line 65: pdfcrop: command not found
名前付きコマンドを実行しようとしましpdfcrop
たが、そのコマンドはシステムに存在しません。どのOSを実行しているのかわからないので、どのように見つけるのかわかりませんが、解決する必要があるのはそれです。 Ubuntuではツールは、texlive-extra-utils
ツールはソフトウェアパッケージです。、Ubuntuを実行している場合は、次のことを試すことができます。
sudo apt install texlive-extra-utils
ArchではAURの一部として見つけることができるので、pdfcropmargins
試してみてください(trizen
お気に入りのAURマネージャに置き換えます)。
trizen -S pdfcropmargins