LaTeXプラグインの違いは何ですか?


42

vimには多くのTexプラグインがあります(vim-latexAutomaticLatexPluginをいくつか挙げます)。

これらのTeXプラグイン(私が名前を付けたものとおそらく他のもの)の間に提供される機能の違いは何ですか?


SOに関するいくつかの関連する質問を次に示します。

回答:


28

さまざまなプラグインの使用経験は限られているため、詳細な比較は行いません。私はいくつかのプラグイン(LaTeX-BoxおよびLaTeX-Suite)をよく知っています。また、自分で開発しているvimtexの 1つのプラグインをよく知っています。したがって、私は主にvimtexについて書きます。しかし、私は最初に、他の人にとって興味深いかもしれないいくつかの参照を指摘します。

概要と参考資料

Vimには多くのプラグインがあります。これらは、少なくとも半人気があると私が認識したものです:

tex.stackexchange.com、そこにある巨大なリスト LaTeXのエディタとIDEのは。一般的な概要を提供しますが、Vimのプラグインの概要も提供します。

vimtex

vimtexはLaTeX-Boxに基づいています。しばらくの間、LaTeX-Boxのバグ修正と更新を提供した後に開始しました。プラグインをゼロから作成した場合、プラグインははるかに現代的な方法で作成できることに気付きました。最初にほとんどの機能を削除し、より堅牢でモジュール式の「エンジン」を構築しました。その後、機能を追加しましたが、今日はLaTeX-Boxのほとんどの機能があり、次にいくつかの機能があると思います。

機能の完全なリストを提供する代わりに(代わりにここを参照してください)、vimtexと他のプラグインの違いのいくつかを指摘しようと思います。ただし、私はいくつかの大胆な主張を提供したいと思います。

  • vimtexは、現在利用可能なLaTeX用の最新の Vimプラグインです
  • コードは高品質であり、現在自分で積極的にメンテナンスされています
  • 一部の機能はまだ開発中ですが、プラグインはほとんど安定しています(したがって、変更や更新の対象になる場合があります)

vimtex vs LaTeX-Box

vimtexはLaTeX-Boxに基づいているため、明らかに同様の原則があります。アイデアは物事をシンプルに保ち、他のより良いプラグインではまだ解決されていない問題を解決することです。これは、利用latexmk LaTeX文書をコンパイルし、それが構文強調表示のための内部Vimのプラグイン上に構築されています。

vimtexに欠けているのLaTeX-ボックス内の1つの重要な特徴は、現在あり:シングルショットのコンパイルコールバックを持ちます。この機能がvimtexにないのは、単純に複雑であるためであり、自分の好みに合わせて簡単に実装できる方法を見つけられなかったためです(提案を歓迎します。 )。

vimtex vs LaTeX-Suite

vimtexとLaTeX-Suiteの主な違いは、おそらくvimtexがVim内にLaTeX用の本格的なIDEを実装しようとしないことです。例えば:

  • vimtexは、完全なスニペット機能を提供しません。これは、UltiSnipsまたはneosnippetまたは同様のスニペットエンジンにより適切に処理されるためです。
  • vimtexはVimの原理に基づいて構築されています。環境のテキストオブジェクト、インライン数学、セクションおよび段落のモーションを提供します。
  • vimtexはlatexmk、コンパイルエラーに関するインスタントフィードバックを取得するために、コールバック機能を使用してコンパイルに使用します
  • vimtexは非常にモジュール式です。機能が気に入らない場合は、オフにすることができます。

ちょうどそれを明確にしたい:vimtexと並行して作業することができLatex-Suiteますが、2つのプラグインのベストを引き出すことができることを意味、同時に。:)
llinfeng

12

Vim-LaTeXは私が使用した唯一のLaTeXプラグインであるため、比較することはできません。私はVim-LaTeXをほぼ1年間使用しています。そこで、Vim-LaTeXについてのみ説明します。

Vim-LaTeXには多くの機能があります。それらのすべてを覚えていません。私が知っていて、常に使用する機能についてお話します。

注:これらは私の限られたユーザーエクスペリエンスであり、誤解を招く可能性があります。私はベテランのVimユーザーではありません。そして、vimscriptについては何も知りません。

IMAP()と<C-j>ジャンプ

IMAP()関数と<C-j>ジャンプ関数はimaps.vim、Vim-LaTeXバンドルのプラグインとして個別に提供されます。これらは強力な機能であり、LaTeXを作成していない場合でも非常に便利です。

  • IMAP()関数は、ビルトインimapiabbrevIMO よりも挿入モードのマッピングとテンプレート化を行う自然な方法を提供します。

  • <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と、オープニングブラケットを2回押すと、ペアを簡単に入力できます。そして、<C-j>ジャンプするとタイピングの流れができます。

1つの主要なグリッチIMAP()<C-j>の事はことである、彼らはあなたの最後の変更履歴を台無しに。(私は長い間修正したいバグの1つです。)したがって、.「想定される最後の変更」にこれらの関数呼び出しが含まれている場合、最後の変更をやり直そうとすると予期しない動作が発生することがあります。

  • を使用して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-j>(他のプラグインとの組み合わせ)jumppingsはCのコードスニペットのテンプレートを作成します

<F5> <F7> コマンドと環境の挿入

欠点の1つIMAP()は、キーの組み合わせを通常のテキストで使用できないことです(マッピングを元に戻さない限りu)。ケースではあなただけしたいことをトリガしますが、望むようにマッピングを<F5>し、<F7>便利になります。これらの2つのキーは、それぞれトリガー環境とインラインコマンド挿入に使用されます。また、ユーザーのモードとカスタマイズに基づいて動作が異なります。

  • 挿入/通常モードでは、カーソルが単語を添付しているとき、または単語内にあるときに、<F5>デフォルトでフォームの基本環境を挿入します

    \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対応する大文字。
  • `8for \infty`<for \le`Ifor \int_{<++>}^{<++>}<++>などのような記号
  • "2回押すと、TeXの二重引用符が2つ取得されます。したがって、リテラル"文字を入力するには、を使用する必要があります。
  • いくつかの列挙環境で押すと、適切な\itemタグが挿入されます。
  • 数学的に視覚的に選択された部分を、とで\left \rightペアでラップできます。`(`[`{
  • 折りたたみはカスタマイズ可能です。折り畳むことができるものを3つのグローバル変数コントロール:Tex_FoldedSectionsTex_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>

PDFの表示、VimとPDFビューア間の前方および後方検索

これは厄介で複雑なトピックです。特定のPDFビューアと一定の運があれば、非常に簡単になります。しかし、それは主にグーグル検索の問題です。

提案

  • LaTeXの方法とVim-LaTeXの方法のバランスを見つける必要があります。
  • Vim-LaTeXは軽量ではありません。使用しない可能性がある機能やキーマッピングがいくつかあり、それらを手動でオーバーライドする必要があります。
  • Vimを使用します。あなたは忍耐の意味を知っています。:-)

全体として、獣を飼いならすためにいくらかの時間を投資しても構わないと思えば、うまくいくと思います。そうは言っても、時間と十分な知識があれば、オーバーヘッド機能を確実に削減し、他のプラグインとの統合の可能性を探ります。

参照資料

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.