LINUX.ORG.RU

[LaTeX][Dia] Масштаб диаграмм

 ,


0

2

Приветик.

Пишу в LaTeX пояснительную записку к дипломной работе, а всякие диаграммы к ней рисую в Dia и экспортирую в EPS.

При всём достаточном удобстве такой схемы, мне постоянно приходится нарываться на косяки с масштабом получаемых рисуночков внутри вывода LaTeX и вручную “на глаз” понижать их scale внутри tex-файлов. Получается, что один и тот же шрифт на всех диаграммах выглядит по-разному. Это невероятно плохо.

Как можно избавить себя от ручной подгонки масштаба векторных EPS-изображений? С растром такой ерунды ведь нету :(

★★

Последнее исправление: eveel (всего исправлений: 1)
Ответ на: комментарий от Rapt0r

> Я в pdf из dia экспортировал.

То ли в Fedora 14 смогли собрать Dia без поддержки экспорта в PDF, то ли ещё что-то. В любом случае, epstopdf даёт неправильный масштаб, а экспорт Dia в png работает хорошо и правильно.

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

Несмотря на удобство dia, я решил использовать graphviz и dot2tex. Вывод диаграммы происходит прямо в latex с такими же шрифтами как в тексте. Может, это не так удобно в плане поменять расположение элементов, зато не надо задумываться как их вообще распологать

michwill ★★★★★
()

> Как можно избавить себя от ручной подгонки масштаба векторных EPS-изображений?

Рисовать всегда в правильном масштабе, чтобы никогда не нужно было делать scale внутри tex-файлов?

kamre ★★★
()

Используй TikZ/PGF или PSTricks. Диаграммы в них получаются аккуратнее, чем в Dia (по крайней мере у меня).

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

Используй TikZ/PGF или PSTricks. Диаграммы в них получаются аккуратнее, чем в Dia (по крайней мере у меня)

есть еще Metapost и замечательная книжка по нему Е. Балдина. Поддерживает как экспорт в EPS, так и вставку в текст. Шрифты родные TeX-овские.

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

Понятно. Для них, конечно же, нет никаких визуальных рисовалок?

Для Metapost есть возможность редактирования с предпросмотром: Emacs + metapost-mode+. Metapost - очень мощный язык с возможностью автоматизации.

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

>есть еще Metapost

Для диаграм он не очень, пакеты довольно примитивны, по сравнению с TikZ'овыми.

И еще мне не удалось подружить его с utf-8, это же касается и Asymtote.

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

Без визуальных рисовалок вполне неплохо рисуется. Если места на листе достаточно много, то можно вообще обойтись без размещения объектов вручную.

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

Для диаграм он не очень

О пакете MetaObj не слышали - не знаем, да?

пакеты довольно примитивны, по сравнению с TikZ'овыми

А что может TikZ, что не может Metapost. Мне и правда, интересно. По автоматизации, думаю, Metapost даст сто очков фору.

И еще мне не удалось подружить его с utf-8

4.2 Юникод настраивается точно так же как и в TeX-е. Текст он сам не пишет, а отсылает на обработку TeX-у, так что все, что умеет последний, умеет и Metapost.

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

> Asymptote интересен с точки зрения трехмерной графики, здесь с ним PSTricks не сравнится.

Да не надо мне никакой тридэ-графики, я человек простой, мне нужно нарисовать всего три вещи: диаграмму отношений сущностей (entity-relationship), схему архитектуры системы и блок-схему пары алгоритмов.

Насколько я знаю, суть всякого *TeX состоит в как раз том, чтобы избавить человека от тупой ручной вёрстки и позволить ему получать красивый результат путём простой декларации нужных сущностей.

Тут же получается, что мне придётся все эти прямоугольники вырисовывать чуть ли не руками, программируя расположение каждой линии и подписи на рисуночке. Я правильно мыслю?

Хочется свести топик к следующему вопросу: имеют ли перечисленные пакеты какие-нибудь макросы для рисования ER-диаграмм, структурных диаграмм и блок-схем? Какие?

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

>О пакете MetaObj не слышали - не знаем, да?

Не знаем. Судя по документации — не хуже PSTricks в плане рисования диаграмм.

А что может TikZ, что не может Metapost.

Указывать положение одного объекта относительно другого опциями left/right/above/below (и их сочетания, типа below left)=of %имя объекта%, например. И вообще, синтаксис TikZ мне больше нравится.

Кстати, для MetaObj есть галерея а-ля http://www.texample.net/tikz/examples/ ?

По автоматизации, думаю, Metapost даст сто очков фору.

Может быть, я с метапостом плотно не работал, так что не могу ничего сказать.

Asymptote интересен с точки зрения трехмерной графики, здесь с ним PSTricks не сравнится.

Это да, не спорю.

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

>мне нужно нарисовать всего три вещи: диаграмму отношений сущностей (entity-relationship)

http://www.texample.net/tikz/examples/entity-relationship-diagram/

схему архитектуры системы

Как вариант, http://www.texample.net/tikz/examples/porter-model/

блок-схему пары алгоритмов

http://www.texample.net/tikz/examples/simple-flow-chart/

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

Тут же получается, что мне придётся все эти прямоугольники вырисовывать чуть ли не руками, программируя расположение каждой линии и подписи на рисуночке. Я правильно мыслю?

Чуть ли не руками не придется. Для Metapost есть упомянутый выше пакет MetaObj. Советую ознакомиться с ним по книге «Goossens, Mittelbach et.al.: The LaTeX Graphics Companion, 2nd ed.». Там так же рассказано про XY-Pics, PSTricks. Очень рекомендую для первоначального ознакомления с графическими возможностями LaTeX. Полная версия (формат djvu) есть на rutracker. Если для Metapost нужен предпросмотр, но придется освоить Emacs. TikZ в представлении не нуждается, есть очень красочный туториал. Для TikZ есть графическая утилита ktikz, ее же можно подружить с Emacs, ссылка. Если будете что-то пробовать, интересно услышать отзыв.

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

Указывать положение одного объекта относительно другого опциями left/right/above/below (и их сочетания, типа below left)=of %имя объекта%, например.

Это и в Metapost есть в виде «xshifted», «yshifted». Именами up, down, left, right там обозначены единичные векторы в соотв. направлениях. У TikZ много средств для работы с блоками текста, в том числе - интерактивно. Поэтому в связке с Beamer дает очень красивые презентации.

И вообще, синтаксис TikZ мне больше нравится.

Что есть, то есть. Однако, Metapost основан Metafont, разработанный Кнутом, поэтому язык более мощный, с макросами, более точной настройкой.

Кстати, для MetaObj есть галерея а-ля http://www.texample.net/tikz/examples/

Наверное, нет. Но пакет несложный, можно разобраться по туториалу.

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

> Goossens, Mittelbach et.al.: The LaTeX Graphics Companion, 2nd ed.

Судя по всему, сейчас функциональности Tikz мне хватит за глаза. Появится возможность - обязательно прочту про Metapost и MetaObj. Спасибо!

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

Судя по всему, сейчас функциональности Tikz мне хватит за глаза.

Интересно, насколько удобно TikZ использовать вместе с ktikz. Если руки дойдут - отпишитесь.

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

> Интересно, насколько удобно TikZ использовать вместе с ktikz. Если руки дойдут - отпишитесь.

Вряд ли я смогу об этом поведать, но очень и очень надеюсь, что использовать Tikz вместе с ktikz удобнее, чем пользоваться KDE в качестве окружения рабочего стола.

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

> И еще мне не удалось подружить его с utf-8

Странно проблем не наблюдаю. В TeX Live 2010 mpost умеет внедрять шрифты без дополнительного прогона LaTeX.

Основная проблема MetaPost для меня (можно всегда обойти, но раздражает) — это ограничения на numeric сверху и снизу, но даже тут уже есть свет в конце туннеля :) Уже появилась преальфа для версии 2.0 без этого ограничения.

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

>Странно проблем не наблюдаю. В TeX Live 2010 mpost умеет внедрять шрифты без дополнительного прогона LaTeX.

Только что попробовал. Действительно, работает. Жаль, что поддержки XeLaTeX нет, хотя какие-то патчи для BSD нагуглились.

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

> Только что попробовал. Действительно, работает. Жаль, что поддержки XeLaTeX нет, хотя какие-то патчи для BSD нагуглились.

Над metapost активно работают, так что вполне может оказаться, что и эта проблема уже решена. IMHO вопросы по теме правильнее задать в списке рассылки metapost@tug.org

P.S. Ещё один плюс MetaPost: поддерживает вывод в SVG. Жаль пока ещё не наступило его время ☹

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

> Жаль, что поддержки XeLaTeX

Кстати подумал и немного не понял. Что значит нет поддержки xelatex? MetaPost умеет внедрять шрифты без дополнительного прогона через latex, хотя преамбулу ему действительно LaTeXовскую ставить надо.

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

> поддержки XeLaTeX нет

Ну вот, а я как раз XeTeX использую. Зачем этот MetaPost тогда вообще нужен? :)

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

Ну вот, а я как раз XeTeX использую.

Естественно, с TeX Live все работает. Думал, дебианщики уже пересели на него - видимо, ошибался :(

Зачем этот MetaPost тогда вообще нужен? :)

С его помощью можно автоматизировать отрисовку всего, что угодно. Ничего подобного у PSTricks, TikZ нет.

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

Основная проблема MetaPost для меня (можно всегда обойти, но раздражает) — это ограничения на numeric сверху и снизу, но даже тут уже есть свет в конце туннеля :) Уже появилась преальфа для версии 2.0 без этого ограничения.

Не с этим ли связана погрешность вычислений в MetaPost? Например, это заметно при использовании пакета m3d - полигоны заходят друг на друга.

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

Если масштаб выбран правильно, то вроде проблем быть не должно. Другое дело, что об этом всегда помнить надо.

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

>MetaPost умеет внедрять шрифты без дополнительного прогона через latex

Угу. А теперь попробуйте вставить «безшрифтовый» метапостовый ps, в документ, который компилируется xelatex.

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

>С его помощью можно автоматизировать отрисовку всего, что угодно. Ничего подобного у PSTricks, TikZ нет.

Прям таки и нет. Есть, но в зачаточном состоянии. Хотя можно завсегда сделать \newcommand{последовательность tikz'овых команд} + поддержка циклов через \foreach.

я как раз XeTeX использую.

Естественно, с TeX Live все работает. Думал, дебианщики уже пересели на него - видимо, ошибался :(

XeTeX, а не TeTeX ☺

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

Угу. А теперь попробуйте вставить «безшрифтовый» метапостовый ps, в документ, который компилируется xelatex.

Объяснили же уже, что можно и с прогоном через TeX. Так делается внутри окружения btex ... etex. Не пойму, что не нравится. Возможность выбора?

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

Прям таки и нет. Есть, но в зачаточном состоянии. Хотя можно завсегда сделать \newcommand{последовательность tikz'овых команд} + поддержка циклов через \foreach.

В Metapost внутрь определения можно вставить любые вычисления, как с глобальными, так и локальными переменными. На выходе получается функция-макрос something(p_1,...,p_n), которое делает вычисления/отрисовку в зависимости от параметров. Думаю, была б такая возможность в TikZ - давно можно было бы и трехмерную графику в нем делать. Увы, этого нет.

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

> Угу. А теперь попробуйте вставить «безшрифтовый» метапостовый ps, в документ, который компилируется xelatex.

А зачем безшрифтовой? И зачем вставлять mp, а не готовый pdf?

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

> Объяснили же уже, что можно и с прогоном через TeX.

Начиная с версии, которая в TeX Live 2010 даже этого уже не нужно. mpost сам вызывает всё, что надо и на выходе получается полностью готовый к употреблению eps, pdf или svg.

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

Затем, что xelatex'овая преамбула к метапосте не работает. Или вы знаете способ использовать ttf шрифты в mp?

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

А, понял в чём проблема. В этом смысле этого сейчас нет и не предвидится, но таже проблема у вас будет и с pstricks, то есть с любой технологией, которая основана на PostScript.

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

В этом смысле этого сейчас нет и не предвидится, но таже проблема у вас будет и с pstricks, то есть с любой технологией, которая основана на PostScript.

Возможно ли сделать так: поместить рисунок в самом LaTeX-файле внутри \begin{empfile} ... \end{empfile} и с помощью pdflatex получить PDF-графику со встроенными шрифтами? Что-то наподобие пакета pst-eps, когда используется окружение внутри LaTeX-документа, но для получения из PSTricks рисунка EPS.

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

Не понял. mpost сейчас умеет всё это делать сам, в смысле вызывает latex (или tex) когда надо. На выходе можно получить pdf, eps или svg уже со встроенными шрифтами.

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

Не понял. mpost сейчас умеет всё это делать сам, в смысле вызывает latex (или tex) когда надо. На выходе можно получить pdf, eps или svg уже со встроенными шрифтами.

Но это с TrueType шрифтами работает?

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

Возможно ли сделать так: поместить рисунок в самом LaTeX-файле внутри \begin{empfile} ... \end{empfile} и с помощью pdflatex получить PDF-графику со встроенными шрифтами?

Мне интересно, а такой вариант будет работать со шрифтами, отличными от Type1?

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

Нет, так как в любом случае код должен пройти через mpost

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