
BaKoMa TeX 및 texpad와 같은 편집기는 개별 페이지를 다시 컴파일할 수 있는 것 같습니다. 나는 이것을 직접 수행하는 방법에 관심이 있지만 이를 수행하는 방법을 찾을 수 없습니다.
좀 더 지식이 풍부한 사람이 여기에 몇 가지 답변을 제공할 수 있기를 바랍니다. 제가 이상적으로 찾고 있는 것은 단계별 프로세스, 이상적으로는 편집기에 통합될 수 있는 종류입니다(저는 LaTeX 개발을 지원합니다). 워크샵 VSCode 확장).
답변1
AucTeX, *TeX에 대한 Emacs의 가장 유명한 주요 모드에는 TeX-command-region
이전에 마우스로 선택한 파일의 모든 부분에 대해 컴파일러를 실행하는 기능이 있습니다(물론 키보드로도 수행할 수 있습니다). 이 함수 코드를 구현하고 싶다면 Emacs 내에서 쉽게 확인할 수 있습니다.
나는 더 이상 Emacs 사용자가 아니기 때문에 그다지 우아하지는 않지만 작동하는 외부 쉘 스크립트를 실행합니다. 모든 texlive 설치 및 ksh, 어쩌면 다른 쉘과 함께 작동해야 합니다. 이것은 어떤 편집기에서도 구현되어서는 안 됩니다.
#!/bin/ksh
#tex_region.sh first_line last_line file [master file]
#where am I?
ousuisje=$(pwd)
#is there a master file?
if [[ -s $4 ]];
then
maitre=$4;
else
maitre=$3;
fi
#copy the preamble
sed -e '/maketitle/,$d' $maitre > /tmp/$maitre ;
#copy file from line $2 to line $3
head -n $2 $3 |tail -n $(( $2 - $1 + 1 )) |\
#absolute path to graphic files
sed "/includegraphics/s:{\([^}]\+}\):{$ousuisje/\1:">> /tmp/$maitre
#add \end{document} to temporary file
echo -E "\end{document}" >> /tmp/$maitre
#goes to /tmp
cd /tmp
#checks which *latex has to be called then compile
laoulualatex=$(grep -c '^\\\usepackage{polyglossia}' $maitre)
if (( $laoulualatex == 1 )) ;
then
# if your distro is texlive, binaries should be in $TEXDIR/bin
lualatex $maitre ;
else
pdflatex $maitre ;
fi
######read the pdf with mupdf (code inspired by Vincent Lozano's framabook
###### "pour aller plus loin avec la ligne de commande")
#checks whether the pdf is opened with mupdf
pidpdf=$(ps -U dthiriet | grep mupdf | grep ${maitre%tex}pdf | cut -d' ' -f1)
if test -z $pidpdf ;
#if not, calls mupdf
then
mupdf ${maitre%tex}pdf &
else
#send a SIGHUP signal to mupdf to actualize the pdf
kill -s HUP $pidpdf ;
fi ;
#####back to my file
cd $ousuisje
추신: 스크립트에서 절대 경로를 사용하여 프로그램을 호출하는 것이 더 좋지만, 이 스크립트를 좀 더 이식 가능하게 만들기 위해 스크립트를 복사할 때 해당 경로를 삭제했습니다.
답변2
확인 사항: 기본 문서가 있고 , , 를 사용하여 원하는 만큼 많은 부분을 포함하는 방법을 알고 있습니다 \include
. 자세한 내용은 여기를 참조하세요.\input
\includeonly
언제 \input과 \include를 사용해야 합니까?. 이로 인해 재컴파일이 상당히 빨라집니다.
미리 컴파일된 형식을 사용하면 컴파일 속도를 높일 수도 있습니다. mylatexformat 패키지를 참조하세요.
그리고 latexmk를 백그라운드에서 컴파일하도록 하면 이를 향상시킬 수 있습니다.
아마도 편집기에서 자동 저장을 허용할 수도 있습니다(예: 입력을 중단한 후 2초). latexmk는 저장 내용을 확인하고 미리 컴파일된 형식으로 컴파일을 시작합니다.
결국에는 무언가를 변경한 페이지의 거의 즉각적인 그림을 얻을 수 있습니다.
답변3
실제 온라인 편집을 위해서는 BaKoMa TeX와 같은 다른 소프트웨어가 수정된 (La-)TeX를 사용합니다. 최신 LuaTeX를 사용하면 내부에 깊숙이 연결하는 것이 더 쉽습니다. 아마도 이것이 조사할 수 있는 경로일 것입니다.
해결 방법으로 수행할 수 있는 작업은 편집기의 현재 커서 위치 지점까지 LaTeX로 컴파일을 시작하는 것입니다. 전체 문서가 다음과 같다고 가정해 보겠습니다.
\documentclass{article}
\begin{document}
$1$
\newpage
$2$
[커서 위치]
Some more example text.
계속하는 대신 여기에서 입력을 종료하고 컴파일을 중단해도 DVI 파일은 이 시점까지 계속 기록됩니다.
\newpage
$3$
\newpage
$4$
\end{document}
LaTeX로 첫 번째 블록을 입력하고 컴파일하는 것이 가능합니다. 그런 다음 사용자가 잠시 휴식을 취하면 컴파일이 계속될 수 있으며 예를 들어 다음 페이지에서 중단될 수 있습니다. 그러면 DVI 문서를 거의 즉시 사용할 수 있습니다. 그러면 사용자 작업 흐름을 방해하지 않도록 백그라운드에서 커서 지점까지 컴파일 프로세스를 다시 시작할 수 있습니다.
수정된 LaTeX 실행 파일을 사용하면 첫 번째 최적화는 일종의 캐시에 컴파일 프로세스를 기록하는 것이므로 현재 페이지 앞의 부분은 변경되지 않는 한 다시 컴파일할 필요가 없습니다. 이로 인해 이 접근 방식도 어느 정도 실현 가능해지며, 이후 페이지의 코드로 이전 페이지의 내용에 영향을 줄 수 있는 프로그래밍 방식이 없습니다. 이는 파일 끝에서 이전 부분을 변경할 수 있는 C 소스 파일과 별도로 LaTeX 파일을 설정합니다.
답변4
이것이 정확히 당신이 찾고 있는 것이 아니라는 것을 알고 있지만 문서의 실시간 미리보기를 제공하는 VIM용 플러그인이 있습니다.
와 함께vim-라텍스-라이브-미리보기그 효과를 얻을 수 있습니다. 물론 이것은 VIM을 편집기로 사용하는 동안에만 작동합니다. 저는 EMACS 사용자는 아니지만 거기에도 비슷한 기능이 있을 것이라고 확신합니다.
이것이 당신을 올바른 방향으로 안내할 수 있기를 바랍니다.