Постановка проблемы
Первое: при построении графиков в gnuplot на экране и в dvi-файле они выглядят нормально, а при конвертации в PDF русские буквы на gnuplot-графике исчезают. Возникает вопрос: "как правильно в гнуплоте использовать кириллические шрифты?"
Второе: в документе LaTeX русские буквы отображаются нормально, однако при выделении и копировании текста из PDF-документа вставляется какой-то мусор. А нужно, чтобы из PDF, созданного LaTeX, можно было бы скопировать и вставить текст на русском.
Решение проблемы с русскими шрифтами в gnuplot
Возникает проблема, в частности, потому, что в PostScript файле часто пишется нечто вроде:
/Helvetica findfont
Решение сводится к тому, что gnuplot нужно заставить использовать Type1 шрифт, который гарантированно и корректно отображается и конвертируется в PostScript-файл. Это, например, может быть NimbusSanL, который ставится с OpenOffice.org. Этот шрифт имеет все варианты начертаний, так что хорошо будет смотреться в любых графиках.
Можно поэкспериментировать, поискав в системе все файлы с расширениями *.pfa и *.pfb и попробовать их в работе.
Теперь как подключить правильный кириллический шрифт к gnuplot. Для этого нужно все упоминания о шрифтах заменить на имя шрифта Type1. Например, пусть это будет шрифт NimbusSanL-Regu, который мы будем использовать везде в графике.
Для этого в заголовке следует добавить:
set terminal postscript 'NimbusSanL-Regu' eps enhanced solidЕсли вы в подписях к осям используете шрифт другого размера, не забудьте добавить упоминание о новом шрифте и туда:
set xlabel "Величина экспозиции, отн.ед." font "NimbusSanL-Regu,18"Всё, после этого ваши графики, созданные в гнуплоте, будут правильно переводиться в PDF и читаться на любых, даже самых альтернативных, системах.
Ссылки
На правильную идею натолкнула эта ссылка, хотя и на английском, а так же Анонимный комментарий здесь и вот этот текст.
Решение проблемы с копированием русского текста из LaTeX-документа
Это результат наших совместных поисков с уважаемым товарищем sin. Его вариант, прекрасно описанный тут, я на всякий случай продублирую сюда:
Подготовленные по шаблонам TeX документы выглядят очень красиво и профессионально с минимумом усилий на вёрстку за счёт разделения стиля и содержимого. Используется масса шрифтов и PDF-файл получается большим. Вопрос на $100. Единственный способ делать правильные PDF в TeX, который мне удалось освоить, заключается в использовании пакета cmap. А это автоматически означает что для создания PDF можно использовать только PDFLaTeX, но не dvitopdf. Это, в свою очередь, означает невозможность использования векторных рисунков в формате eps напрямую. Я нашел следующее решение...Это всё хорошо, но мне нужен драйвер dvipdf, который делает dvi-файл сначала - на этом работает критичный для меня способ перегона документов из LaTeX в ЗлоWord. А описанный выше способ с драйвером dvips не работает.В Debian cmap находится в пакете tetex-extra. Чтобы подключить cmap надо использовать в документе TeX заголовок следующего вида:
\RequirePackage{cmap}
\RequirePackage[cp1251]{inputenc}
\RequirePackage[TS1,T2A]{fontenc}
\RequirePackage[english,russian]{babel}
Причем именно в таком порядке: cmap первый. Иначе работать не будет!Все. Теперь, если делать PDF с помощью PDFLaTeX, русский будет в порядке.
Мой вариант ответа на вопрос на $100 заключается в том, чтобы использовать шрифты из пакета scalable-cyrfonts-tex - Scalable Cyrillic fonts for TeX в Debian. Для этого они, естественно, были сразу же установлены. После этого в тело документа, сразу же после его начала, было вставлено вот это:
\begin{document}
\usefont{T2A}{ftm}{m}{sl}
После этого документ будет оформлен шрифтом Times New Roman, и это убивает сразу двух зайцев: русский текст можно копировать из документа в самых альтернативных системах, и документ оформлен именно Times, что имеет решающее значение в разного рода консервативных издательствах. В установленном пакете шрифтов много, о чём можно осведомиться в заботливо приложенном мейнтейнером пакета Readme-файле /usr/share/doc/scalable-cyrfonts-tex/README.Debian
This package makes the following font families available to TeX:Всё-таки порой читать мануалы к файлу весьма полезно для здоровья :-)
ftm -- Free Times
fhv -- Free Helvetian
fcr -- Free Courier
fag -- Free Avant Garde
fbk -- Free Bookman
fnc -- Free Schoollbook
fpl -- Free Paladin
fta -- Teams
fsj -- OldSlavic
For example you can change to the medium series slanted shape Teams font by the following command:
\usefont{T2A}{fta}{m}{sl}
Кроме того, я использую dvipdfmx для перевода полученного dvi-файла в PDF. Полученный PDF отображается везде красиво и корректно, и из него можно выдрать текст. Оставшиеся aux и bbl-файлы требуется для перевода текста в ЗлоСистемы и ЗлоОфис при помощи команды:
latex2rtf -F -M12 -i russian -a file.aux -b file.bbl file.tex
Это ранее описывалось тут.
\RequirePackage[cp1251]{inputenc}
ОтветитьУдалитьА не пора бы перейти на utf8 уже?
2 Анонимный пишет...
ОтветитьУдалитьА не пора бы перейти на utf8 уже?
Расскажите это пользователям виндовс, с которыми приходится работать через вот такое ...
А как вы смотрите на MathML и вообще возможность отображение сложных текстов в инернете?
ОтветитьУдалить2virens:
ОтветитьУдалитьЗа пост спасибо, авось пригодится. Забыл правда, когда графики с русским текстом на них строил :)
Кстати, подозреваю, у некоторых «конкурентов» gnuplot с этим лучше. Это так, идея к следующей версии моего сравнения, ещё один параметр для сравнения.
2анонимный:
> \RequirePackage[cp1251]{inputenc}
> А не пора бы перейти на utf8 уже?
Увы, но в LaTeX с utf8 не всё гладко. Точнее не всё гладко в BibTeX8.
> Единственный способ делать правильные PDF в TeX, который мне удалось освоить, заключается в использовании пакета cmap. А это автоматически означает что для создания PDF можно использовать только PDFLaTeX, но не dvitopdf. Это, в свою очередь, означает невозможность использования векторных рисунков в формате eps напрямую
ОтветитьУдалитьЯ это решаю так:
1. кладу все изображения и в eps, и в pdf (epstopdf)
2. в \includegraphics не указываю расширение, тогда нужный файл (eps или pdf) подбирается автоматически
Использую более сложную схему подключения русских шрифтов к гнуплоту. Принцип такой: имеется список предпочтительных шрифтов в порядке убывания приоритета с соответсвующими encoding векторами. Например, я использую такой список:
ОтветитьУдалить/SFRM1200 /SFRM1400 /WNCYR10 /Cyrillic /Helvetica.
То есть, если интерпретатору известен шрифт SFRM1200 (eps файл вставлен в tex, использующий cm-super шрифты), он и используется. Если неизвестен, то проверяется следующий по списку, и т. д. В худшем случае используется либо /Cyrillic, который идёт вместе с ghostscript, либо, если всё совсем плохо, используется транслит гельветикой. Плюс в том, что рисунки в результате используют шрифты документа не сильно увеличиваясь при этом в размерах.
возник вопрос где можна найти инструкции как всталять рисунки просто какйто пипец ... вообщем не разобрался как четко позиционировать
ОтветитьУдалитьвообщем не разобрался как четко позиционировать
ОтветитьУдалить\usepackage{graphicx}
\usepackage{float}
\begin{figure}[H]
\includegraphics{image}
\end{figure}
Как-то так;)
Отличная статья! Сам искал черте сколько времени, но так и не нашел приличного решения.
ОтветитьУдалитьВот уж теперь графиков то понастроим :)
Спасибо за статью
ОтветитьУдалить2 Анонимный пишет...
ОтветитьУдалитьА как вы смотрите на MathML и вообще возможность отображение сложных текстов в инернете?
Пристально :-) На самом деле пока нет нужды выкладывать сложные математические вещи в интернете. Но latex2html я уже освоил, так что проблем быть не должно :-)
2 jetxee пишет...
Забыл правда, когда графики с русским текстом на них строил :)
Вынуждают публиковаться и в русских журналах, хотя я резко против (уровень научных журналов России - катастрофа). Так что вопрос со шрифтами решать было очень нужно.
Кстати, подозреваю, у некоторых «конкурентов» gnuplot с этим лучше.
Мне, если честно, альтернативы гнуплоту слева - меня он всем устраивает. И NASA, кстати, тоже :-)
1. кладу все изображения и в eps, и в pdf (epstopdf)
Там они УЖЕ с покорёженными шрифтами, я пробовал.
2 Michael пишет...
Принцип такой: имеется список предпочтительных шрифтов в порядке убывания приоритета с соответсвующими encoding векторами
А зачем эти сложности: поставить шрифты и выбирать, который из них использовать.
Если неизвестен, то проверяется следующий по списку, и т. д.
На работе - виндузятники. У них вообще со шрифтами глобальные проблемы, даже у их любимого взасос ворда :-) То квадратиками таймс откроет, то ариал кажет арабской вязью...
2 Bardus пишет...
возник вопрос где можна найти инструкции как всталять рисунки просто какйто пипец ...
Вот это вопрос хороший, кстати. Надо будет изваять пост на эту тему, а то сам часто забываю и лезу в другие документы за латеховским кодом.
2 Inger пишет...
вообщем не разобрался как четко позиционировать
Если с точностью до сантиметра - не знаю, если на уровне "по центру - слева - справа", это можно.
2 nagos пишет...
Сам искал черте сколько времени, но так и не нашел приличного решения.
Дык а то! Меня вон в гугле после этого забанили :-) Ларчик открывался сравнительно просто...
Вот уж теперь графиков то понастроим :)
Это точно! :-) Я уже переделал почти все свои скрипты под новые шрифты.
2 Mike пишет...
Спасибо за статью
На здоровье! :-)
[b]А зачем эти сложности: поставить шрифты и выбирать, который из них использовать.[/b]
ОтветитьУдалитьНу, прикручу я к gs cm-super шрифты. А мне файлы в журнал надо будет послать, что, переделывать всё? Так у меня гарантия есть, что файл откроется где угодно. Вариант внедрения тоже не очень хорош. cm-super - слишком большие шрифты.
[b]На работе - виндузятники. У них вообще со шрифтами глобальные проблемы, даже у их любимого взасос ворда :-) То квадратиками таймс откроет, то ариал кажет арабской вязью...
[/b]
Та же фигня. Однако, ghostscript он и в винде ghostscript. В отличие от ворда, с ним проблемы редки.
Я ничего сверхестественного не делаю. Стандартные PostScript операторы, никаких внутренних gs-команд.
2 Michael пишет...
ОтветитьУдалитьНу, прикручу я к gs cm-super шрифты. А мне файлы в журнал надо будет послать, что, переделывать всё?
Нет, не придётся. Внедряем Type1 шрифты в графики и в постскрипт\пдф и всё. Всё работает.
Однако, ghostscript он и в винде ghostscript. В отличие от ворда, с ним проблемы редки.
У меня проблемы были как раз с пользователями виндовс - у меня Гельветика есть, а у них нету. Установка Type1 шрифтов меняет дело.
С utf8 есть проблемы, да. Например, у меня (gnuplot 4.2, linux, локаль utf8) не видно русских букв даже в dvi. Гугление показало, что терминал postscript в частности и язык postscript(видимо, вследствие древности) вообще не поддерживают utf8. Однако в разрабатываемой версии gnuplot 4.3 (нужно качать через cvs) наметился некоторый прогресс.
ОтветитьУдалитьВо первых, появлась set encoding utf8 (в 4.2, правда, например вывод на экран работал и без нее)
Во вторых опция set terminal postscript
adobeglyphnames, которая позволяет использовать для всех неLatin-1 символов адобовские имена вместо кодов. При этом используемый шрифт должен их поддерживать. NimbusSanL-Regu не поддерживает, поддерживает, например, Arial
>использовать шрифты из пакета scalable-cyrfonts-tex
ОтветитьУдалить>документ будет оформлен шрифтом Times New Roman
Так это же просто отлично! Спасибо за пост, Михаил!
2 Denis комментирует...
ОтветитьУдалитьС utf8 есть проблемы, да.
Поэтому старые дебианщики, завернувшись в плед и постукивая по деревянной механической клавиатуре, сидят на кои8-r и горя не знают :-))
Во первых, появлась set encoding utf8 (в 4.2, правда, например вывод на экран работал и без нее)
В 4.0 за такое по рукам дают. Там её нет, только кои.
При этом используемый шрифт должен их поддерживать. NimbusSanL-Regu не поддерживает, поддерживает, например, Arial
Нимбус, сколь мне память не изменяет, Type1, потому вроде как и не должен их поддерживать.
2 sin комментирует...
>использовать шрифты из пакета scalable-cyrfonts-tex
>документ будет оформлен шрифтом Times New Roman
Так это же просто отлично! Спасибо за пост, Михаил!
Пожалуйста. Стало быть, наш с тобой спор на 100 баксов закрыт, победила дружба :-))
У меня есть вопрос по LaTeX. Несмотря на то, что всю свою документацию я пишу в DocBook XML, я использую LaTeX в качестве промежуточного слоя при создании PDF. У меня есть такая проблема с таблицей:
ОтветитьУдалитьhttp://portal.istra.ru/gallery/displayimage.php?album=852&pos=25
Подскажите, что можно сделать на уровне LaTeX, чтобы оно автоматически соображало о необходимости уменьшения размера текста для конкретной ячейки?
Второй вопрос, как уменьшить шрифт для verbatim:
ОтветитьУдалитьПолучение информации о всех секциях схемы. Наиболее важный параметр секции указан в последней колонке. Это
дата прекращения действия секции. {\footnotesize\begin{Verbatim}[]
[oracle@filter: shell]$ ./show-status -p
SMAP "Dozor-Jet" version 4.0 - Show Information about Scheme
PartNum MAIN tablespace MESS tablespace Status Created Modified Limit
------- ------------------------- ------------------------- -------- ---------- ---------- ----------
1 SMAP_MAIN00001 SMAP_MESSAGES00001 ONLINE 04-DEC-07 04-DEC-07 04-DEC-07
2 SMAP_MAIN00002 SMAP_MESSAGES00002 ONLINE 04-DEC-07 04-DEC-07 05-DEC-07
3 SMAP_MAIN00003 SMAP_MESSAGES00003 ONLINE 04-DEC-07 04-DEC-07 06-DEC-07
\end{Verbatim}
}
Спасибо за статью, Михаил! Мне она очень помогла))
ОтветитьУдалитьОднако возникла следующая ситуация: после добавления в преамбулу строки \usefont{T2A}{ftm}{m}{sl} вытащить текст из pdf по-прежнему невозможно. Проблема решилась после прочтения документации на пакет scalable-cyrfonts-tex и добавления в преамбулу \usepackage{cyrtimes} (или другого стиля из этого пакета) после чего и \usefont{T2A}{ftm}{m}{sl} вроде бы не нужен
Немного офтоп, но всеже - как вы проверяете орфографию и пунктуацию в latex. Для орфографии нашел только aspell. Что делать с пунктуацией ума не приложу. Черканите статью, думаю тема актуальная.
ОтветитьУдалитьс уважением u995.livejournal.ком
Огромное Вам спасибо, Вы просто меня спасли.
ОтветитьУдалитьПри подключении \usefont{T2A}{ftm}{m}{sl} - шрифт с наклоном, и не знает как правильно переносить слова (в документе на 2 стр - 8 проблемных слов-строк). Самое интересное что, если отключить
ОтветитьУдалить\usepackage{cyrtimes}
\usefont{T2A}{ftm}{m}{sl}
проблем с переносами нет. В чём может быть проблема? Спасибо.
Здравствуйте, Михаил.
ОтветитьУдалитьПосле компиляции в pdf, созданный с помощью гнуплота, рисунок содержит много пустого места на листе. Как правильно собрать рисунок, чтобы не было лишнего белого пространства, а только сам график.