#!/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/그리고 거기에 물어보세요.
당신이 얻는 유일한 쉘 오류는 명령이 누락된 것 같습니다.
./src2pdf.sh: line 65: pdfcrop: command not found
이름이 지정된 명령 을 실행하려고 pdfcrop
하지만 해당 명령이 시스템에 존재하지 않습니다. 어떤 OS를 실행하고 계신지 몰라서 어떻게 찾으시는지는 모르겠지만, 해결하셔야 할 부분이 바로 그것입니다. 우분투에서는도구는 texlive-extra-utils
도구는 소프트웨어 패키지입니다., Ubuntu를 실행 중인 경우 다음을 시도해 볼 수 있습니다.
sudo apt install texlive-extra-utils
Arch에서는 AUR의 일부로 찾을 수 있으므로 pdfcropmargins
시도해 보십시오( trizen
선호하는 AUR 관리자로 교체).
trizen -S pdfcropmargins