LINUX.ORG.RU

[R] кириллица в pdf

 


1

2

В графиках вроде всё в порядке, но не имеет ширины боксов, буквы накладываются друг на друга, в то время как с некириллицой всё в порядке. В получающихся перед этим eps-ках всё в порядке, конвертирую epstopdf - всё зашибись. X11-устройстве тоже полёт нормальный.

PS импортирую в *.tex Sweave'ом

★★★★★

Ответ на: комментарий от Evgueni
# pacman -Ss type1
extra/gsfonts 1.0.7pre44-2 [2,97 MB] [установлен]
    Ghostscript standard Type1 fonts from URW
extra/xorg-fonts-type1 7.4-1 [1,26 MB] [установлен]
    X.org Type1 fonts
ados ★★★★★
() автор топика

И да, шрифты по умолчанию.

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

Значит проблемы с метриками. В любом случае у URW с кириллицей вроде как проблемы — не доделанная она там. Лучше Computer Modern запользовать.

Evgueni ★★★★★
()

так какое решение? а то я склоняюсь все в кои8 набирать, там по моему таких проблем нет с иллюстрациями на русском.

psv1967 ★★★★★
()
Ответ на: комментарий от Evgueni

Их надо брать откуда-то или из TeX Live запользовать можно?

ados ★★★★★
() автор топика
Ответ на: комментарий от psv1967

так какое решение?

Да целый зоопарк: tikzDevice (недочёты и тормоза), импорт данных в gnuplot (многабукаф) и все его девайсы (тормоза), обратно на MetaPost(нихачуу), ну и вот сабж.

Немного полюбовавшись на то, что R творит в графике, я сделал вывод, что R наше всё. Метод самый быстрый и, так как на R лежит импорт данных в документ (таблицы и мелочь всякая), экономичный.

В общем уныло всё как-то...

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

tikzDevice в R не очень то русский выводит мне показалось, или выводит?

я о pgfSweave()

попалась длинная инструкция http://vss.73rus.com/blog/2007/05/20/cyrillic-fonts-in-R-plots/ решающая вроде проблему, но возник вопрос а не адаптировал ли ее кто для более чистых шрифтов?

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

tikzDevice в R не очень то русский выводит мне показалось, или выводит?

Выводит. Там путаница с масштабами, шкалы ручками приходится оттачивать.

я о pgfSweave()

Ну вот, ещё один велосипед нашёлся.

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

> Выводит. Там путаница с масштабами, шкалы ручками приходится оттачивать.

пример бы посмотреть ^)

в рамках pgfSweave та же ругань на неизвестную ширину символа

типа

1: In title(main = «тест тест») : неизвестна ширина символа 0xe2

2: In title(main = «тест тест») : неизвестна ширина символа 0x7f

3: In title(main = «тест тест») : неизвестна ширина символа 0x8

4: In title(main = «тест тест») : неизвестна ширина символа 0xe2

5: In title(main = «тест тест») : неизвестна ширина символа 0x7f

6: In title(main = «тест тест») : неизвестна ширина символа 0x8

Ну вот, ещё один велосипед нашёлся.

а что в pgfSweave() велосипедного то?

psv1967 ★★★★★
()
CM <- Type1Font("CM",
    c(  "/usr/share/texmf-dist/fonts/afm/public/cm-lgc/fcmr8a.afm",
        "/usr/share/texmf-dist/fonts/afm/public/cm-lgc/fcmb8a.afm",
        "/usr/share/texmf-dist/fonts/afm/public/cm-lgc/fcmri8a.afm",
        "/usr/share/texmf-dist/fonts/afm/public/cm-lgc/fcmbi8a.afm")) 
pdfFonts(CM=CM) 
par(family="CM")
Sweave("calcs.Rnw")

В calcs.Rnw

<<echo=FALSE,fig=TRUE>>=
plot(x2,y2,family="CM")
lines(x,y)
title(main="Прямая line")
@

Нуль.

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

ну не все так суицидально :)

если включить определение шрифтов в чунк, то наблюдаем

Ошибка в driver$runcode(drobj, chunk, chunkopts) :

Error in title(main = «Прямая line») :

семейство 'CM' не включено в PostScript-устройство

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

так какое решение?

перегнать pdf2ps, а затем обратно ps2pdf. Где-то внутри этого что-то происходит и на выходе со шрифтами полный порядок.

P.S. Debian.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Действительно срабатывает :) Блин я уже думал скрипт писать перед запуском pdf латекса перегоняющий eps->pdf рисунки.

А вывод от pgfSweave тоже лечит? А то нет под рукой живого ничего на нем сконвертировать.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

мда пути другие у меня просто, опять в результате попытки вывода чисто pdf

1: In title(main = «Прямая line») : неизвестна ширина символа 0xbf

2: In title(main = «Прямая line») : неизвестна ширина символа 0xfa

3: In title(main = «Прямая line») : неизвестна ширина символа 0x9

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

спутал с CM гарнитурой, вообще то терпимо получается...

конечно прощай гиперссылки в пдф :)

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

А вывод от pgfSweave тоже лечит?

Доеду до работы, проверю.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

перегнать pdf2ps, а затем обратно ps2pdf. Где-то внутри этого что-то происходит и на выходе со шрифтами полный порядок.

Эффекта никакого.

ados ★★★★★
() автор топика
Ответ на: комментарий от psv1967

Так как:

> postscriptFonts()[22]
$ComputerModern
$family
[1] "ComputerModern"

$metrics
[1] "CM_regular_10.afm"      "CM_boldx_10.afm"        "CM_italic_10.afm"      
[4] "CM_boldx_italic_10.afm" "CM_symbol_10.afm"      

$encoding
[1] "TeXtext.enc"

attr(,"class")
[1] "Type1Font"

Инициализацию CM сношу:

<<echo=FALSE,fig=TRUE>>=
ps.options(family="ComputerModern",fonts="ComputerModern")
plot(x2,y2)
lines(x,y)
title(main="Прямая line")
@

И компилю:

> Sweave("calcs.Rnw")
Writing to file calcs.tex
Processing code chunks ...
 1 : term verbatim eps pdf
Error in title(main = "Прямая line") : 
  неизвестная кодировка 'TeXtext' в 'mbcsToSbcs'
Вдобавок: Было 11 предупреждений (введите warnings() чтобы их просмотреть)
Ошибка в driver$runcode(drobj, chunk, chunkopts) : 
  Error in title(main = "Прямая line") : 
  неизвестная кодировка 'TeXtext' в 'mbcsToSbcs'
Calls: Sweave -> <Anonymous>
Выполнение остановлено
make: *** [calcs.tex] Error 1
ados ★★★★★
() автор топика
Ответ на: комментарий от psv1967

tikzDevice в R не очень то русский выводит мне показалось, или выводит?

я о pgfSweave()

Кириллица в tex-файлах не появляется?

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

> Эффекта никакого.

Значит еще и с юникодом что то в системе. У меня сработало. Но и просто ps с русскими надписями pstopdf перегоняет хорошо. Раньше у меня такая конвертация не проходила.

Теоретически с локалью кои8р никаких проблем с русским быть не должно. Ни в R, ни в ЛаТеХ.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Теоретически с локалью кои8р никаких проблем с русским быть не должно

Чёрт. Что не сделаешь ради стабильности?

/me пошёл переводить Arch на кои8р

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

........

File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc
Now handling font encoding OML ...
... no UTF-8 mapping file for font encoding OML
Now handling font encoding T1 ...
... processing UTF-8 mapping file for font encoding T1
(/usr/share/texmf-texlive/tex/latex/base/t1enc.dfu
File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
defining Unicode char U+00A1 (decimal 161)
defining Unicode char U+00A3 (decimal 163)

........

Now handling font encoding OMX ...
... no UTF-8 mapping file for font encoding OMX
Now handling font encoding U ...
... no UTF-8 mapping file for font encoding U

........

[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count109
\scratchdimen=\dimen149
\scratchbox=\box36
\nofMPsegments=\count110
\nofMParguments=\count111
\everyMPshowfont=\toks23
\MPscratchCnt=\count112
\MPscratchDim=\dimen150
\MPnumerator=\count113
\everyMPtoPDFconversion=\toks24
)
Preview: Fontsize 10pt
Preview: PDFoutput 1

! Package inputenc Error: Unicode char \u8:п not set up for use with LaTeX.

See the inputenc package documentation for explanation.
Type H <return> for immediate help.
...

l.20 ...cale=1.20000004768372] (TeX) {\bfseries п
роба пера%
Here is how much of TeX's memory you used:
7787 strings out of 494818
133355 string characters out of 1178665
176826 words of memory out of 3000000
10833 multiletter control sequences out of 15000+50000
5179 words of font info for 16 fonts, out of 3000000 for 9000
212 hyphenation exceptions out of 8191
47i,3n,52p,344b,468s stack positions out of 5000i,500n,10000p,200000b,50000s

! ==> Fatal error occurred, no output PDF file produced!
Error in getMetricsFromLatex(TeXMetrics) :
TeX was unable to calculate metrics for the following string
or character:

   проба пера

Common reasons for failure include:
* The string contains a character which is special to LaTeX unless
escaped properly, such as % or $.
* The string makes use of LaTeX commands provided by a package and
the tikzDevice was not told to load the package.

The contents of the LaTeX log of the aborted run have been printed above,
it may contain additional details as to why the metric calculation failed.

Ошибка в driver$runcode(drobj, chunk, chunkopts) :
Error in getMetricsFromLatex(TeXMetrics) :
TeX was unable to calculate metrics for the following string
or character:

   проба пера

Common reasons for failure include:
* The string contains a character which is special to LaTeX unless
escaped properly, such as % or $.
* The string makes use of LaTeX commands provided by a package and
the tikzDevice was not told to load the package.

The contents of the LaTeX log of the aborted run have been printed above,
it may contain additional details as to why the metric calculation failed.

psv1967 ★★★★★
()
Ответ на: комментарий от ugoday

хо, хо, хо!

оно завелось однако, и я похоже перебираюсь на pgfSweave

options( tikzMetricPackages = c( «\\usepackage[utf8x]{inputenc}», «\\usepackage[T2A]{fontenc}», «\\usepackage[english,russian]{babel}», «\\usetikzlibrary{calc}»))

оно просто пока не хватает основную преамбулу документа!

psv1967 ★★★★★
()
Ответ на: комментарий от ados

стоп машина! :)

options( tikzMetricPackages = c(
«\\usepackage[utf8x]{inputenc}»,
«\\usepackage[T2A]{fontenc}»,
«\\usepackage[english,russian]{babel}»,
«\\usetikzlibrary{calc}»))

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

T1 впрочем даже приятнее входят,

пока только не проверял печать такого документа, но по моему все должно быть окей

PS как же окей :( эта тварь не хочет видеть русского в чунках кода :(

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

впрочем проблема в

‘highlight’ If ‘TRUE’ output will be syntax highlighted with the ‘highlight’ package.

если сказать ,highlight = F то окей

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

<<чего там еще по делу ,keep.source=TRUE,cache=T,highlight = F>>=

psv1967 ★★★★★
()
Ответ на: комментарий от ados

бывает что плохо шрифты вставляются, и не все просмоторщики могут на печатать-показать... по разному, попробую напечатать, буду знать.

но вроде, за исключением гимороя с options(), все выглядит прилично...

PS еще есть сомнения как будет он работать с «овер100тысяч» точек на графике ...

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

адаптировал ли ее кто для более чистых шрифтов?

Что удалось родить:

CM <- Type1Font("CM",c(
        file.path("/usr/share/texmf-dist/fonts/afm/public/cm-lgc",c(
                "fcmr6z.afm",   # так называемые a set of
                "fcmb6z.afm",   # Computer Modern fonts with
                "fcmri6z.afm",  # non-TEX encodings
                "fcmbi6z.afm" 
                )),"/usr/lib/R/library/cmrutils/fonts/afm/cmsyase.afm"))
# и символы
embedCMFonts <- function (file) embedFonts(file,fontpaths=
    c(  "/usr/share/texmf-dist/fonts/type1/public/cm-lgc/",
        "/usr/lib/R/library/cmrutils/fonts/type1/"))
pdfFonts("CM"=CM)
postscriptFonts(CM=CM)

Sweave("calcs.Rnw",pdf = T)
embedCMFonts("calcs-001.pdf")
embedCMFonts("calcs-002.pdf")

pdf("russian.pdf") # адаптация креатива с более чистыми шрифтами
    plot(1, 1, family="CM", main="Заголовок trololo")
dev.off()
embedCMFonts("russian.pdf")

В calcs.Rnw

<<echo=FALSE,fig=TRUE>>=
ps.options(family="CM")
plot(x2,y2)
lines(x,y)
title(main="Прямая line")
@

С «адаптацией» вин, но в отчёте кириллица опять в гармошку.

ados ★★★★★
() автор топика

И-и-и-х-а-а-а!!!

Надо так:

<<echo=FALSE,fig=TRUE>>=
pdf.options(family="CM")
plot(x2,y2)
lines(x,y)
title(main="Прямая line")
@

Без embedFonts сабжевая проблема уходит, но шрифты не меняются, а так получается нативно.

Всем спасибо!

ados ★★★★★
() автор топика
Ответ на: комментарий от ados

Все таки нативный Sweave для рабочих отчетов больше подходит. У него несогласованность некоторая графики и текста. Если нужно книжку делать, решение с нативной графикой LaTeX лучше.

Кроме того без кеширования мало мальски большой отчет в Sweave превращается из «работы в репл», в «компилирование на c». А мне показалась лучше интеграция кеширования в pgfSweave.

psv1967 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.