使用 LaTeX-Suite 时在 \emph 中启用视觉斜体字符

使用 LaTeX-Suite 时在 \emph 中启用视觉斜体字符

我正在使用 Vim + LaTeX-Suite 插件编写 LaTeX 源文件。我注意到 LaTeX-Suite 会自动将 中的字符变为斜体\textit

<code>\textit</code> 内的文本以斜体显示

有没有办法\emph也可以启用这种行为?

答案1

请注意,与 不同\textit\emph充当表示强调的开关。因此,在常规文本中使用时,\emph默认情况下定义为斜体,但在已强调的文本中\emph切换回直立。因此,在编辑器中突出显示为斜体在语义上并不完全正确\emph

但是,这可以毫不费力地完成。高亮来自 Vim 本身,而不是 Latex-Suite。语法高亮定义存储在类似于的目录中/usr/share/vim/vim80/syntax(具体位置可能因您的安装方法和版本而异)。在文件中tex.vim定义了 LaTeX 的高亮。Vim 可以从放置在 中的文件中读取其他高亮定义。因此,您可以从原始文件~/.vim/after/syntax中复制 的相关定义,替换并将其保存为目录中的附加文件。\textittex.vim\emph/after/syntax

在以下文件中,前两个块从原始文件中复制而来,tex.vim用于定义变量tex_fasttex_conceal,第三个块包含 的实际定义\emph。请注意,我没有实现粗体+强调的组合。

~/.vim/after/syntax/tex.vim

" by default, enable all region-based highlighting
let s:tex_fast= "bcmMprsSvV"
if exists("g:tex_fast")
 if type(g:tex_fast) != 1
  " g:tex_fast exists and is not a string, so
  " turn off all optional region-based highighting
  let s:tex_fast= ""
 else
  let s:tex_fast= g:tex_fast
 endif
endif

" let user determine which classes of concealment will be supported
"   a=accents/ligatures d=delimiters m=math symbols  g=Greek  s=superscripts/subscripts
if !exists("g:tex_conceal")
 let s:tex_conceal= 'abdmgsS'
else
 let s:tex_conceal= g:tex_conceal
endif

" particular support for emph {{{1
if s:tex_fast =~# 'b'
  if s:tex_conceal =~# 'b'
   if !exists("g:tex_nospell") || !g:tex_nospell
    syn region texItalStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup,@Spell
   else                                                                                              
    syn region texItalStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup
   endif
  endif
endif

Vim 的截图:

在此处输入图片描述

相关内容