2012-06-30 2 views
0

vim의 구문 강조 기능을 활용하여 latex에서 코드 (xcolor 패키지 사용)를 강조 표시하고 싶습니다. 따라서 vim-script가 버퍼의 강조된 텍스트에 대한 vim 내부 정보를 내보낼 수 있는지 궁금합니다. 분명히 강조 표시된 각 엔티티의 시작, 끝 및 색상을 알고 있으면 충분합니다. 라텍스 코드 또는 html과 같은 다른 언어의 생성은 명백합니다.vim의 구문 강조 기능을 latex로 내보내기

+1

그런 다음 HTML로 직접 내 보내지 않는 이유는 무엇입니까? LaTeX에 정규 표현식 그룹을 매치시키는 것은 좀 더 복잡합니다 :/ – Rook

+0

목록 패키지 http://en.wikibooks.org/wiki/LaTeX/Packages/Listings에 대해 알고 있습니까? – epsilonhalbe

답변

3

당신은 내 formatvim 플러그인을 사용할 수 있습니다 : 그것은

Format format latex-xcolor 

와 라텍스 xcolor 형식으로 내보낼 수 있습니다. 결과가 좋지 않다면 (완전히 테스트되지 않았고이 옵션을 거의 사용하지 않았습니다.) 패치를 보낼 자유를 느껴보십시오. 형식 지정이있는 사전은 here으로 볼 수 있습니다. 자신의 형식을 만드는 데 필요한 모든 것이 documentation입니다.

참고 : 다른 언어로 내보내려면 내 플러그인과 관련된 사양을 작성하면됩니다. 다음은 내 플러그인에 latex-xcolor-clone 형식을 추가하는 코드입니다.

scriptencoding utf-8 
execute frawor#Setup('0.0', {'plugin/format': '3.0'}) 
let s:texescape= 
      \'substitute('. 
      \ 'substitute(@@@, ''\v[\\\[\]{}&$_\^%#]'', '. 
      \    '''\=''''\char''''.char2nr(submatch(0))."{}"'', '. 
      \    '"g"),'. 
      \'" ", ''\\enskip{}'', "g")' 
let s:texstylestart= 
      \'((@[email protected])?'. 
      \ '(''\colorbox[HTML]{''.'. 
      \ '((@[email protected]!=#"")?'. 
      \  '(toupper(@[email protected][1:])):'. 
      \  '(toupper(@[email protected][1:])))."}{".'. 
      \ '''\textcolor[HTML]{''.'. 
      \ '((@[email protected]!=#"")?'. 
      \  '(toupper(@[email protected][1:])):'. 
      \  '(toupper(@[email protected][1:])))."}{"):'. 
      \ '(((@[email protected]!=#"")?'. 
      \  '(''\colorbox[HTML]{''.toupper(@[email protected][1:])."}{"):'. 
      \  '("")).'. 
      \ '''\textcolor[HTML]{''.'. 
      \ '((@[email protected]!=#"")?'. 
      \  '(toupper(@[email protected][1:])):'. 
      \  '(toupper(@[email protected][1:])))."}{"))' 
let s:texstyleend= 
      \'repeat("}", '. 
      \ '((@[email protected])?'. 
      \  '(2):'. 
      \  '((@[email protected]!=#"")+1)))' 
let s:format={ 
      \'begin':  '\documentclass[a4paper,12pt]{article}'. 
      \    '\usepackage[utf8]{inputenc}'. 
      \    '\usepackage[HTML]{xcolor}'. 
      \    '\pagecolor[HTML]{%''toupper(@[email protected][1:])''%}'. 
      \    '\color[HTML]{%''toupper(@[email protected][1:])''%}'. 
      \    '\begin{document}{\ttfamily\noindent', 
      \'line':   '%>'.s:texstylestart.".". 
      \      s:texescape.".". 
      \      s:texstyleend, 
      \'lineend':  '\\', 
      \'end':   '}\end{document}', 
      \'strescape': s:texescape, 
     \} 
call s:_f.format.add('latex-xcolor-clone', s:format) 
+0

매력처럼 작동합니다. 도표 작성자와 깨지지 않는 공 간만 문제를 일으키는 것 같지만 먼저 대체 할 수 있습니다. 이것이 버그 리포트에 적합한 지 여부는 확실하지 않습니다. – highsciguy

+0

@highsciguy 무엇을 의미합니까? 탭 문자는 공백으로 대체되며 유지되지 않습니다. 줄 바꿈하지 않는 공백은 문제를 일으키지 않아야합니다. 그러나'set list listchars = nbsp : _'를 수행하지 않는 한 그 공백은있는 그대로 포함됩니다. 그렇게하면 SpecialKey를 사용하여 강조 표시된 '_'으로 포함됩니다 (현재 : set hl = 8 : ErrorMsg를 지정해도 vim에서이를 ErrorMsg로 강조 표시합니다). – ZyX

+0

set list 명령은 줄 바꿈하지 않는 공백에 도움이됩니다. vim에 표시되기 때문에 탭이 나타날 수 있습니다. 실제로 출력 "»"문자가 나타납니다. – highsciguy

0

명령은 Vim에 내장되어 있습니다. 그것은 분명히 라텍스가 아니라 HTML을 생성합니다.

관련 문제