LaTeX 플러그인의 차이점은 무엇입니까?


답변:


28

나는 다른 플러그인에 대한 경험이 제한되어 있기 때문에 심도있는 비교를 제공하지 않을 것입니다. 나는 두 개의 플러그인을 잘 알고 있으며 ( LaTeX-BoxLaTeX-Suite ), 플러그인을 직접 개발하고 있기 때문에 하나의 플러그인을 잘 알고 있습니다 : vimtex . 따라서 나는 대부분 vimtex에 대해 쓸 것이다. 그러나 먼저 다른 사람들이 관심을 가질만한 참고 문헌을 지적하겠습니다.

일부 개요 및 참조

Vim 용 플러그인 이 많이 있습니다. 이것들은 적어도 반 인기있는 것으로 인정한 것입니다.

tex.stackexchange.com 하는이 거대한 목록 LaTeX의 편집기와 십오는. 일반적으로 좋은 개요를 제공하지만 Vim의 플러그인에 대한 개요도 제공합니다.

Vimtex

vimtex는 LaTeX-Box를 기반으로합니다. LaTeX-Box에 대한 버그 수정 및 업데이트를 한동안 시작한 후에 시작되었습니다. 플러그인을 처음부터 작성하면 훨씬 더 현대적인 방식으로 플러그인을 작성할 수 있다는 것을 깨달았습니다. 먼저 대부분의 기능을 제거하고보다 견고하고 모듈화 된 "엔진"을 구축했습니다. 그런 다음 기능을 추가했으며 오늘 LaTeX-Box의 기능 대부분과 일부 기능이 있다고 생각합니다.

전체 기능 목록을 제공하는 대신 (여기서는 여기 참조 ) vimtex와 다른 플러그인의 차이점을 지적하려고합니다. 그러나 나는 대담한 주장을 제시하고 싶다.

  • vimtex는 오늘날 사용 가능한 LaTeX를위한 가장 현대적인 Vim 플러그인입니다
  • 코드는 품질이 우수 하며 현재 자체적 으로 적극적으로 관리 하고 있습니다.
  • 플러그인은 일부 기능이 아직 개발 중이지만 대부분 변경되지 않습니다 (따라서 변경 및 업데이트 될 수 있음)

vimtex 및 LaTeX-Box

vimtex는 LaTeX-Box를 기반으로하기 때문에 비슷한 원칙을 가지고 있습니다. 아이디어는 일을 단순하게 유지하고 문제 해결을 위해 다른 더 나은 플러그인으로 아직 해결되지 않았습니다. 그것은 사용 latexmk 텍 문서를 컴파일하고, 내부 Vim은 구문 강조를위한 플러그인을 기반으로 구축.

LaTeX-Box에는 vimtex에서 누락 된 중요한 기능이 하나 있습니다 : callback을 사용한 싱글 샷 컴파일 . 이 기능이 vimtex에없는 이유는 단순히 복잡하기 때문에 자신의 취향에 맞게 간단하게 구현 할 수있는 방법을 찾지 못했기 때문입니다 (제안은 환영합니다, 주저하지 말고 문제를 제기하십시오. ).

vimtex 및 LaTeX-Suite

vimtex와 LaTeX-Suite의 주요 차이점은 vimtex가 Vim 내부의 LaTeX를위한 완전한 IDE를 구현하려고하지 않는다는 것입니다. 예 :

  • vimtex는 UltiSnips 또는 neosnippet 또는 이와 유사한 스 니펫 엔진에서 더 잘 처리되므로 전체 스 니펫 기능을 제공하지 않습니다 .
  • vimtex는 Vim 원칙을 기반으로합니다 : 환경에 대한 텍스트 객체, 인라인 수학, 섹션 및 단락에 대한 모션을 제공합니다.
  • vimtex는 latexmk콜백 기능이있는 컴파일에 사용 하여 컴파일 오류에 대한 즉각적인 피드백을 얻습니다.
  • vimtex는 매우 모듈 식입니다. 기능이 마음에 들지 않으면 끌 수 있습니다.

그냥 명확하게하려면 : vimtex와 나란히 작업 할 수 있습니다 Latex-Suite당신은이 플러그인의 장점을 얻을 수 있다는 뜻, 같은 시간에 . :)
llinfeng

12

Vim-LaTeX는 내가 사용한 유일한 LaTeX 플러그인이므로 비교할 수 없습니다. 거의 1 년 동안 Vim-LaTeX를 사용하고 있습니다. Vim-LaTeX에 대해서만 이야기하겠습니다.

Vim-LaTeX 에는 많은 기능 이 있습니다 . 나는 그들 모두를 기억하지 못한다. 알고 있고 지속적으로 사용하는 기능에 대해서만 이야기하겠습니다.

참고 :이가 내 제한된 사용자 경험을 할 수있다, 매우 오해의 소지가 . 나는 노련한 Vim 사용자가 아닙니다. 그리고 나는 vimscript에 대해 아무것도 모른다.

IMAP () 및 <C-j>점프

IMAP()기능 및 <C-j>점프 기능은 imaps.vimVim-LaTeX 번들에서 플러그인 으로 별도로 제공됩니다 . 이 기능은 강력한 기능이며 LaTeX를 작성하지 않더라도 매우 유용 할 수 있습니다.

  • IMAP()이 함수는 내장 imapiabbrev, IMO 보다 일반적으로 삽입 모드 매핑 및 템플릿을 수행하는보다 자연스러운 방법을 제공합니다 .

  • <C-j>점프는 많은 Vim-LaTeX 완성 기능에 의해 활용됩니다. 점핑 포인트는로 표시됩니다 <++>.

  • 내장 된 삽입 모드 키 매핑은 IMAP()호출 로 구현됩니다 . 예를 들어, 파일 IMAP()에서 유용한 호출 의 긴 목록을 찾을 수 있습니다 main.vim.

    call IMAP ('__', '_{<++>}<++>', "tex")
    call IMAP ('()', '(<++>)<++>', "tex")
    call IMAP ('[]', '[<++>]<++>', "tex")
    call IMAP ('{}', '{<++>}<++>', "tex")
    ...
    call IMAP ('((', '\left( <++> \right)<++>', "tex")
    call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
    call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
    ...
    

그런 다음 say를 입력 ()하면 커서가 괄호 사이에 자동으로 상주하여 첫 번째를 바꿉니다 <++>. 안으로 입력을 마치면 차고 <C-j>쾅쾅 거리며 커서가 괄호 밖으로 이동하고 계속해서 입력합니다. 익숙해지면 중독성이 강한 타이핑 흐름이 형성되기 시작합니다.

위에서 \left \right보았을 때 오프닝 브라켓의 이중 스트로크로 페어를 쉽게 입력 할 수 있습니다. 그리고 <C-j>점프는 타이핑 흐름을 만듭니다.

하나의 주요 결함 IMAP()<C-j>일이 있다는 것입니다 그들은 당신의 마지막 변경 기록을 망쳐 놨어요 . (오랫동안 고치려고하는 하나의 버그입니다.) 따라서 ."최종 변경 사항"에 이러한 함수 호출이 포함되어 있으면 마지막 변경 사항을 다시 실행할 때 예기치 않은 동작이 발생할 수 있습니다 .

  • IMAP()간단한 키 매핑에서보다 복잡한 템플릿에 이르기까지를 사용하여 모든 종류의 매핑을 수행 할 수 있습니다 . 다음은 내 매핑의 예입니다 ( ftplugin/tex.vim).

    call IMAP('*EEQ',"\\begin{equation*}\<CR><++>\<CR>\\end{equation*}<++>",'tex')
    call IMAP('DEF',"\\begin{definition}[<++>]\<CR><++>\<CR>\\end{definition}<++>",'tex')
    call IMAP('BIC','\binom{<++>}{<++>}<++>','tex')
    call IMAP('PVERB','\PVerb{<++>}<++>','tex')
    call IMAP('VERB','\verb|<++>|<++>','tex')
    
  • imaps.vim플러그인에 대한 흥미로운 사실은 플러그인이 글로벌 플러그인이라는 점입니다. LaTeX 이외의 잠재적 인 사용을 의미합니다. 실제로 C에서 코드 스 니펫 템플릿을 빌드하기 위해 다른 플러그인과 결합하여 점프 <++>하고 사용합니다 <C-j>.

<F5> <F7> 명령과 환경의 삽입

한 가지 단점은 IMAP()키 조합을 더 이상 일반 텍스트에서 사용할 수 없다는 것입니다 (에 의해 매핑을 취소하지 않는 한 u). 사례에서 당신은 단지하려는 트리거 당신이 원하는 경우, AS 매핑을 <F5>하고 <F7>편리. 이 두 키는 각각 환경 및 인라인 명령 삽입 을 트리거 하는 데 사용 됩니다. 또한 사용자의 모드 및 사용자 지정에 따라 다르게 작동합니다.

  • 삽입 / 정상 모드에서 커서가 단어를 첨부하거나 단어에있을 때 <F5>기본적으로 will을 누르면 양식의 기본 환경이 삽입됩니다.

    \begin{word}
    <Cursor>
    \end{word}<++>
    

    단어를 기반으로; 를 누르면 <F7>기본적으로 \word{}<++>단어를 기준으로 양식의 기본 인라인 명령이 삽입됩니다 .

  • "기본적으로"는 <F5>/ 에 의해 트리거 될 때 특정 단어의 동작을 사용자 정의 할 수 있음을 의미합니다 <F7>. 내 설정 중 일부는 다음과 같습니다 ( .vimrc) :

    let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
    let g:Tex_Com_latex = "{\\LaTeX}<++>"
    let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
    
  • 삽입 / 정상 모드에서 커서가 아무 것도 붙어 있지 않은 경우 (일명 단독 ) <F5>/ <F7>를 누르면 삽입 할 환경 / 명령을 선택하는 메뉴가 나타납니다. 또는 하단에 원하는 환경 / 명령 이름을 입력 할 수 있습니다. 개인적으로, 나는 거의 사용하지 <F5>/ <F7>이런 식으로.

  • 텍스트를 시각적으로 선택한 후 <F5>/ <F7>를 누르면 텍스트 줄 바꿈 메뉴가 나타납니다 . 그런 다음 선택한 텍스트는 선택하거나 입력 한 환경 / 명령에 래핑됩니다.

  • 삽입 / 정상 모드에서 커서가 환경 / 명령의 범위에있을 때를 누르면 환경 / 명령 변경<Shift>+<F5>/<F7> 메뉴가 나타납니다 .

기타 키 매핑

  • 그리스 문자. `a`z대응하는 수도.
  • 기호 좋아 `8에 대한 \infty, `<대한 \le, `I대한 \int_{<++>}^{<++>}<++>
  • "두 번 누르면 TeX 큰 따옴표 쌍을 얻습니다. 리터럴 "문자 를 입력 하려면을 사용해야합니다.
  • 여러 열거 환경에서 누르면 적절한 \item태그 가 삽입됩니다 .
  • , 및을 사용 \left \right하여 시각적으로 선택된 수학 부분을 쌍 으로 래핑 할 수 있습니다 .`(`[`{
  • 접기는 사용자 정의 할 수 있습니다. 접을 수있는 세 가지 글로벌 변수 제어 : Tex_FoldedSections, Tex_FoldedMisc,와 Tex_FoldedEnvironments.

내장 매핑이 너무 멀리 떨어져 있거나 원하는 것을 끝내지 않는 경우가 있습니다. 다음과 같이 내장 맵핑을 재정 의하여 내장 맵핑을 대체 할 수 있습니다 after/ftplugin/tex.vim.

call IMAP('`|','\abs{<++>}<++>','tex')
call IMAP('ETE',"\\begin{table}\<CR>\\centering\<CR>\\caption{<+Caption text+>}\<CR>\\label{tab:<+label+>}\<CR>\\begin{tabular}{<+dimensions+>}\<CR><++>\<CR>\\end{tabular}\<CR>\\end{table}<++>",'tex')
call IMAP('==','==','tex')
call IMAP('`\','`\','tex')

다중 컴파일 엔진 설정

항상 엔진 pdflatexxelatex엔진 을 전환해야합니다 . 따라서 다음과 같은 줄이 있습니다 .vimrc.

"switch to pdflatex
function SetpdfLaTeX()
    let g:Tex_CompileRule_pdf = 'pdflatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lp :<C-U>call SetpdfLaTeX()<CR>

"switch to xelatex
function SetXeLaTeX()
    let g:Tex_CompileRule_pdf = 'xelatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lx :<C-U>call SetXeLaTeX()<CR>

Vim과 PDF 뷰어간에 PDF, 앞으로 및 뒤로 검색

지저분하고 복잡한 주제입니다. 특정 PDF 뷰어와 일정량의 운 이 있으면 매우 쉽습니다. 그러나 그것은 주로 구글 검색의 문제입니다.

제안

  • LaTeX 방법과 Vim-LaTeX 방법 사이의 균형을 찾아야합니다.
  • Vim-LaTeX는 전혀 가볍지 않습니다. 절대 사용하지 않을 기능 및 / 또는 키 매핑이 있으므로 수동으로 재정의해야합니다.
  • Vim을 사용합니다. 당신은 인내 가 무엇을 의미 하는지 안다 . :-)

전반적으로, 나는 짐승을 길들이기 위해 약간의 시간을 기꺼이 투자한다면 그것이 효과가 있다고 생각합니다. 그러나 시간과 적절한 지식이 있다면 오버 헤드 기능을 완전히 줄이고 다른 플러그인과의 통합 가능성을 모색 할 것입니다.

참고 문헌

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.