Печать умлаутов в Matlab

Я пытаюсь создать pdf-файл из рисунка Matlab с использованием цветов cmyk, но столкнулся с проблемой умляутов, а также некоторых других специальных символов. Есть ли другой способ справиться с этим, кроме латекса? Следующий пример демонстрирует проблему.

plot(rand(199,1))
title_string = ['Some text:äö' char(228) ':2005' char(150) '2008:end text'];
title(title_string);
print(gcf,'-dpdf','cmykfile.pdf','-r600','-cmyk'); 
print(gcf,'-dpdf','rgbfile.pdf','-r600');

Как видно из pdf-файлов, RGB-версия обрабатывает умлауты, но не дефисы, а CMYK пропускает их все.

PDF генерируется в Matlab с помощью Ghostscript, но я не нашел, как настроить кодировку символов для GS.

Я использую Windows и Matlab R2014.


person Pekka    schedule 21.08.2014    source источник
comment
Это часть более крупной проблемы печати unicode символов в MATLAB. См. эти сообщения по теме: q1, а1   -  person Dev-iL    schedule 21.08.2014
comment
помимо ссылок в комментарии выше, вы можете ознакомиться с проектом Waterloo: waterloo.sourceforge.net/index.html   -  person bla    schedule 21.08.2014
comment
Спасибо за комментарии. Я прочитал страницы сообщений на этом и других форумах, но эти были новыми для меня. Первый кажется наиболее интересным, и javacomponent уже дал многообещающие результаты.   -  person Pekka    schedule 21.08.2014
comment
Текст в javaobjects не печатается как векторная графика...   -  person Pekka    schedule 21.08.2014
comment
Я бы действительно пошел на латекс. С matlab2tikz и хорошими настройками в pgfplots сюжет не просто в порядке, но и действительно качественный для публикации. Функции экспорта Matlab - худшие функции, которые я когда-либо находил.   -  person mike    schedule 05.09.2014
comment
Почему вы хотите избежать латекса? Возможно, причину этого проще решить.   -  person Dennis Jaheruddin    schedule 09.09.2014
comment
Мне не удалось изменить шрифт в латексе (на шрифт типа Arial). На данный момент лучшим решением является печать PDF-файла RGB и преобразование его в CMYK с помощью Acrobat Pro.   -  person Pekka    schedule 27.09.2014
comment
Изменение шрифта на самом деле возможно, но это определенно не тривиально: nl.mathworks.com /matlabcentral/newsreader/view_thread/114116   -  person Dennis Jaheruddin    schedule 27.11.2014
comment
Юникод поддерживается (лучше?) в R2015a.   -  person A. Donda    schedule 07.05.2015


Ответы (1)


Я не совсем уверен, что это решение, которое вы искали. В любом случае, если вы сначала создадите eps, а затем преобразуете его в pdf, в выходном файле не будет проблем со специальными символами в заголовке, при условии, что вы не создаете строку заголовка, используя char .

plot(rand(199,1))
title_string = 'Some text:äöä:2005—2008æ:end text';
title(title_string);
print(gcf,'-depsc','cmykfile.eps','-r600','-cmyk'); 
!ps2pdf cmykfile.eps cmykfile.pdf

Приведенный выше код работает, если у вас есть утилита ps2pdf в системном пути. У вас уже есть ps2pdf на вашем компьютере, если у вас установлен MiKTeX, но вам может потребоваться обновить системный путь. По сути, ps2pdf должен быть ярлыком для gs, поэтому, если у вас установлен только gs, а не MiKTeX, вы сможете добиться того же результата.


РЕДАКТИРОВАТЬ

На моей машине (Windows 7, MATLAB R2014b) также хорошо работает этот код, без необходимости использовать ps2pdf:

plot(rand(199,1))
title_string = 'Some text:äöä:2005—2008æ:end text';
title(title_string);
print(gcf,'-dpdf','cmykfile.pdf','-r600','-cmyk');

Кажется, проблема возникает, когда вы создаете строку заголовка, используя char.

person lmillefiori    schedule 07.05.2015