示されているように lstlisting のインライン バージョンを使用する場合:
\lstinline{!$omp parallel for}
vim での構文の強調表示がうまくいかず、latex ファイルの残りの部分がすべてコード リストの一部であるかのように赤く表示されます。$
問題を引き起こしているのはドルだ。どうすればこれを回避できますか?
示されているように lstlisting のインライン バージョンを使用する場合:
\lstinline{!$omp parallel for}
vim での構文の強調表示がうまくいかず、latex ファイルの残りの部分がすべてコード リストの一部であるかのように赤く表示されます。$
問題を引き起こしているのはドルだ。どうすればこれを回避できますか?
ついにこの問題を一気に解決しましょう!
私は のメンテナーである Charles E. Campbell にメールを送りtex.vim
、listings パッケージに強調表示ルールを追加するよう提案しました。tex.vim
しかし、リスト パッケージのサポートの欠如は、実際には意図的なものであることが判明しました。推論を見つけることができます:h tex-package
。要するに、独自の拡張構文強調表示ルールを作成することになっています (投稿の下部を参照)。
Tex: より多くのコマンドを強調したいですか?
LaTeX はプログラム可能な言語であるため、特殊な LaTeX コマンド、構文、およびフォントでいっぱいのパッケージが何千もあります。そのようなパッケージを使用している場合、配布された syntax/tex.vim がそれをサポートすることを望むことがよくあります。しかし、明らかにこれは非現実的です。したがって、mysyntaxfile-add のテクニックを使用して、syntax/tex.vim によって提供される強調表示を拡張または変更することを検討してください。通常は $HOME/after/syntax/tex/[pkgname].vim にある、作成した拡張機能を http://vim.sf.net/にアップロードすることを検討してください。
個人的には、平均的なユーザーが Vim を使用して自分の LaTeX を作成するためのしきい値が確実に増加するため、これが含まれないのは少し残念だと思います。などの構文強調表示を見つけて追加するのlstlisting
はlstinline
簡単ではありません。このスレッドを見ても、すぐに変わるようには見えません。
DevSolar はすでにそれを見つけたようです (そして私はその功績に感謝します!) が、Campbell はLaTeX パッケージをサポートする vimballs の例をいくつか提供しています。最初のlstlisting.vba.gzlstlisting
には、との強調表示ルールが含まれていますlstinputlisting
。lstinline
ただし、このトピックで説明するが欠けています。
最後に、これが私のlistings.vim
居住地です$HOME/.vim/after/syntax/tex/
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
syn region texZone start="\\lstinputlisting" end="{\s*[a-zA-Z/.0-9_^]\+\s*}"
syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
-
これが好ましい解決策のようです。でシステム全体のファイルを変更する必要はありません/usr/share/vim/..
。構文の強調表示自体を修正するのではなく、vimball をダウンロードして入手したり、環境を変更したりする必要はありません。これを簡単なプラグインとしてリリースして、よりアクセスしやすくすることを検討するかもしれません.
tex
最後に、実際にファイルタイプを実行していることを確認することを忘れないでくださいplaintex
。これは上記のコメントに既に投稿されていますが、LaTeX-Box に追加したチケットにさらに情報があります。
最初の問題は、tex-File の残りの部分が混乱した構文の強調表示で表示されているように思えました。したがって、おそらく簡単で実用的な解決策は、
%stopzone
lstlisting-Region の後。
これは実際にはバグではなく、仕様によるものです。TeX は文脈依存型の言語であるため、これを正しく強調表示するために、Vim はこのコードが発生するポイントまで TeX ドキュメント全体を解析および解釈する必要があります。これは、シンタックス ハイライト プラグインとしては複雑すぎ、時間がかかりすぎます。
唯一の許容できる修正は、ソース コード内の各トークンのメタ情報を出力する TeX の完全な実装を使用して、構文ハイライターを最初から書き直すことです。これは巨大なプロジェクトです。私の知る限り、現在利用可能な TeX 実装はそのような情報を提供していません。
これは私のために働く:
\lstinline[mathescape]{!$\$$omp parallel for}
私の知る限り、数学モードでドル記号をタイプセットしますが、目に見える違いは見られませんでした。
この問題はありません。filetype=texでVim7.3.46を実行しています。(私のデフォルトでは、.texファイルでは "plaintex"です。:setftでファイルタイプを確認することをお勧めしますか?)