Центральноевропейские символы в Vim и печать (PDFing) их из - PullRequest
8 голосов
/ 26 декабря 2011

Я пытаюсь убедить GVim 7.3 правильно печатать (:hardcopy) символы центральной Европы (šđčćž ŠĐČĆŽ) в PDF.Настройки, которые я считаю уместными

set encoding=utf8
set fileencodings=ucs-bom,utf8,cp1250,latin1
set guifont=Consolas:h9:cEASTEUROPE
set printfont=Consolas:h9:cEASTEUROPE

После изменения кодировки на cp1250 (и записи их снова, поскольку изменение кодировки приводит к увеличению), они распечатываются правильно.

Теперь я думал, что utf-8 был намного больше и более полным, чем cp1250.Почему после этого изменения они правильно распечатывают, или, что более важно, почему я не могу использовать их в сочетании с enc=utf-8 (который я обычно использую из-за обилия других символов, обычно недоступных)?

enter image description here

enter image description here


:version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2010 17:59:02)
MS-Windows 32-bit GUI version with OLE support
Included patches: 1-46
Compiled by Bram@KIBAALE
Big version with GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent +clientserver +clipboard +cmdline_compl
+cmdline_hist +cmdline_info +comments +conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff +digraphs -dnd
-ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +gettext/dyn
-hangul_input +iconv/dyn +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu
 +mksession +modify_fname +mouse +mouseshape +multi_byte_ime/dyn +multi_lang -mzscheme +netbeans_intg +ole -osfiletype
+path_extra +perl/dyn +persistent_undo -postscript +printer -profile +python/dyn +python3/dyn +quickfix +reltime +rightleft
+ruby/dyn +scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary +tag_old_static
-tag_any_white +tcl/dyn -tgetent -termresponse +textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -xfontset -xim -xterm_save +xpm_w32
   system vimrc file: "$VIM\vimrc"
     user vimrc file: "$HOME\_vimrc"
 2nd user vimrc file: "$VIM\_vimrc"
      user exrc file: "$HOME\_exrc"
  2nd user exrc file: "$VIM\_exrc"
  system gvimrc file: "$VIM\gvimrc"
    user gvimrc file: "$HOME\_gvimrc"
2nd user gvimrc file: "$VIM\_gvimrc"
    system menu file: "$VIMRUNTIME\menu.vim"
Compilation: cl -c /W3 /nologo  -I. -Iproto -DHAVE_PATHDEF -DWIN32   -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG   -DFEAT_XPM_W32   -DWINVE
R=0x0400 -D_WIN32_WINNT=0x0400  /Fo.\ObjGOLYHTR/ /Ox /GL -DNDEBUG  /Zl /MT -DFEAT_OLE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DFEAT_GUI_W3
2 -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT -DFEAT_TCL -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl83.dll\" -DDYNAMIC_TCL_VER=\"8.3\" -DFEAT_PYTH
ON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DFEAT_PYTHON3 -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python31.dll\"
-DFEAT_PERL -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl512.dll\" -DFEAT_RUBY -DDYNAMIC_RUBY -DDYNAMIC_RUBY_VER=191 -DDYNAMIC_RUBY_DLL
=\"msvcrt-ruby191.dll\" -DFEAT_BIG /Fd.\ObjGOLYHTR/ /Zi
Linking: link /RELEASE /nologo /subsystem:windows /LTCG:STATUS oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib  comdl
g32.lib ole32.lib uuid.lib /machine:i386 /nodefaultlib gdi32.lib version.lib   winspool.lib comctl32.lib advapi32.lib shell32.lib
 /machine:i386 /nodefaultlib libcmt.lib oleaut32.lib  user32.lib      /nodefaultlib:python27.lib /nodefaultlib:python31.lib   e:\t
cl\lib\tclstub83.lib WSock32.lib e:\xpm\lib\libXpm.lib /PDB:gvim.pdb -debug
Press ENTER or type command to continue

При вводе и сохранении с помощью enc = utf8:

0000000: c5a1 2020 2020 c5a0 0d0a c491 2020 2020  ..    ......    
0000010: c490 0d0a c48d 2020 2020 c48c 0d0a c487  ......    ......
0000020: 2020 2020 c486 0d0a c5be 2020 2020 c5bd      ......    ..
0000030: 0d0a 0d0a 0d0a                           ......

... с enc =cp1250

0000000: 9a20 2020 208a 0d0a f020 2020 20d0 0d0a  .    ....    ...
0000010: e820 2020 20c8 0d0a e620 2020 20c6 0d0a  .    ....    ...
0000020: 9e20 2020 208e 0d0a 0d0a                 .    .....

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Вот очень хорошая тема , обсуждающая что-то очень близкое к этому. В конце делается вывод: «это не работает, не делайте этого» - просто сохраните файл в UTF-8 и распечатайте его с чем-то другим, например блокнот.

Это работает в моей системе:

:silent !notepad /pt "%" "PDFLite"

где PDFLite - это имя моего принтера для печати в PDF.

Редактировать : я использую кодировку "utf-8" в vim.

0 голосов
/ 19 ноября 2015

Я использую ту же версию Vim, что и OP. Мое волшебное заклинание для печати этого материала:

:se fenc=cp1252
:w
:e ++enc=cp1252
:se enc=cp1252
:se fenc=cp1252
:se penc=cp1252
:hardcopy

Используйте кодовую страницу, которая подходит для вас. Первые три строки (то есть сохранение и перезагрузка) могут не понадобиться, но они должны гарантировать, что текст на самом деле преобразуется (вместо того, чтобы просто интерпретировать буфер). AFAICT enc и penc должны быть установлены, fenc это просто CYA. Затем используйте :hardcopy в зависимости от того, что вы хотите.

Не забудьте изменить соответствующие кодировки (enc, fenc) обратно и повторно сохранить, если вы предпочитаете сохранять файл в какой-то другой кодовой странице (latin1, utf-8 и т. Д.). Процедура существует :se fenc и :w. Затем вы можете продолжить с :e (возможно, с добавленными ++enc=xxx) и :se enc=xxx, чтобы проверить его и убедиться, что вы работаете с копией, используя предпочитаемую кодовую страницу, плюс еще один раунд :se fenc=xxx и :w когда вы закончите, просто чтобы быть в безопасности.

Все это немного избыточно, но это способ убедиться, что Vim на одной странице с вами. Как вы заметили, в обработке кодовых страниц в Windows есть что-то забавное (по крайней мере, печать WRT), поэтому я не обязательно доверяю тому, чтобы все правильно делалось чисто внутренне. Я просто заставляю его изменить фактическое представление байтов, а затем проверяю, использует ли он это.

0 голосов
/ 23 сентября 2013

Установите paps, все работает нормально с помощью команды в vim "! Paps <%> out.ps", затем вы можете конвертировать с помощью ps2pdf в pdf.

Если на Mac используется 'brew install paps«

...