LINUX.ORG.RU

«Подстановка» шрифта в графику

 ,


1

1

Значит, такой вопрос. Вот я рисую, например, в Inkscape что-нибудь, сохраняю в .eps, вставляю в документ через \includegraphics. Есть способы удостовериться, что на рисунке будет то же начертание и размер шрифта, что в самом документе? Ну, кроме того, чтоб не рисовать в Inkscape, а рисовать скриптами прямиком из самого документа.

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

Ответ на: комментарий от einhander

В Inkscape при сохранении в .eps есть галка, которая генерирует дополнительный .tex-файл. Пока не пробовал его подключать (через \input, возможно?).

DarthVadimius, ага, это примерно то, о чём я писал. Только тут используется .pdf.

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

В Inkscape при сохранении в .eps есть галка, которая генерирует дополнительный .tex-файл.

Даже не пробовал, такой способ, мне экспорта в tikz хватало.

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

Хм, сработало всё-таки, во всяком случае, \showthe\font показывает одно и то же внутри и вне figure. Правда, пришлось добавить \inputencoding{utf8} непосредственно перед \input{}, и всё равно сборка спотыкается на \, ~ и подобном.

Выравнивание надписей едет, что нехорошо, но логично: отрисованная надпись привязывается к координатам угла, а размеры у неё уже другие, чем у формулы в $...$. Причём ощущение, что замена [lb] в

\put(0.22969294,0.00173941){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$dA$}}}%
на [rt] ничего не сдвигает. Надо покопаться ещё.

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

подключать (через \input, возможно?

Да, именно так. Cоздаётся файл *.pdf_tex, который подключается через \input

В Inkscape при сохранении в .eps есть галка

Можно ещё это автоматизировать через командную строку, прописав, например, где-либо в Makefile.

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

Можно ещё это автоматизировать через командную строку

Да, про это дело я прочитал. Осталось, пожалуй, только разобраться с координатами, куда \put-ится строка.

Наверное, буду пользоваться при случае этим способом, с pdf, а не eps, потому как собираю документы при помощи pdflatex, а он всё равно второе перегоняет в первое.

al_exquemelin ★★★
() автор топика
Последнее исправление: al_exquemelin (всего исправлений: 1)

Осталось всё-таки понять, почему нижняя надпись «вжимается» в рисунок. В pdf_tex вот такие строчки:

\begin{picture}(1,0.65242479)%
    ...
    \put(0.24697206,0.00187883){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$dA$}}}%
    \put(0.52473124,0.35885712){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\begin{minipage}{0.26840473\unitlength}\raggedright \end{minipage}}}%
\end{picture}%

Пробовал менять «вертикальную» цифру для picture и координату для dA — не помогает. По идее, inkscape -z -D --file=#1.svg --export-pdf=#1.pdf --export-latexinkscape должно экспортировать весь рисунок, так что непонятно, почему не хватает места. Пробовал -C вместо -D, чтобы вывести всю страницу, но тоже бесполезно.

Исходный файл вот, на всякий случай.

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

Эцнова я

Должен сказать, что с pdf_tex способ хороший, но для меня оказался бесполезным. Надписи ездят, как на коньках, и приходится всё равно подбирать размер рисунка близким к тому, что будет на конечном слайде, а потом подолгу подгонять положение надписей. И если я поменяю ширину колонки или сменю тему слайда на тему без navbar сбоку, всё опять разъедется к чьей-то матушке.

Находил на SO похожий вопрос, но к решению там не пришли. В общем, единственный плюс тут, пожалуй — всяческие над- и подстрочные элементы не приходится дорисовывать средствами Inkscape. Надо будет TikZ попробовать, что ли.

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

Да ладно. Наверное, придётся, как и вначале, заниматься подгонкой размеров рисунков. Хотя можно с тем же успехом сразу в Inkscape вбивать и рендерить формулы (я не знал, что он это умеет, пока не прочитал тут).

Вообще, я с этим вопросом заморочился оттого, что Inkscape подставлял в надписи шрифтом serif кириллицу и греческие буквы sans-serif (всё Modern Roman). Поскольку сейчас я делаю слайды, а значит, вся писанина sans-serif, то вопрос откладывается.

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

Специально по просьбам трудящихся. Исходник такой.

На выходе так. Естественно все переведено в png для наглядности.

У меня своя специфика, формул мало, в основном текст, картинки и дохрена таблиц, и немного химии.

У экспорта в tikz есть ограничения, нет поддержки градиентов, текстур, стрелок - их надо рисовать в ручную.

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

На выходе так

Ну, здорово. В одних случаях всё сразу работает как надо, в других всё равно нужна долгая подгонка. У меня вон отрезки расползлись. Вчерашняя попытка вставить график из svg закончилась не помню чем (вернее, закончилась тем, что через gnuplottex его нарисовал).

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

Кстати, а в чем проблема с использованием подхода с созданием pdf с отдельным tex файлом, если нужно корректное масштабирование и начертание тем же шрифтом. Например:

\centering\resizebox{0.9\textwidth}{!}{%
    \input{source/img.pdf_tex}  
} 
Если же без масштабирования шрифта то
 \def\svgwidth{<desired width>} 

Единственное цвет еще не понял как делать дефолтный, кроме как руками уже в сгенерированном tex.

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

Так вот с \svgwidth у меня надписи оказывались смещены непонятно куда, как я и писал выше. \resizebox не пробовал, сегодня вечером повожусь и напишу о результатах.

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

Совсем забыл про этот рисунок. Вот в такой конструкции надписи выглядят более-менее.

\begin{columns}
    \column{0.4\textwidth}
    \begin{figure}[ht]\centering\scriptsize
        \def\svgwidth{0.9\textwidth}
        \includesvg{fig/Lambert_Cosine_Law_1}
    \end{figure}
\end{columns}

Если убрать \scriptsize, нижнюю надпись втянет в рисунок, как я выше писал. В общем, только и остаётся, что заранее подгонять размер картинки поточнее под то, что будет на слайде.

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

Получается \svgwidth изменяет размер рисунка без изменения размера шрифта. А \resizebox изменяет все размеры. Для презентаций я использовал шаблон Beamer в Inkscape, там и перерисовывал. Поделись плз, исходником рисунка в svg.

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

Поделись плз, исходником рисунка в svg.

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

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

Вспомнил, чем мне неугодил pdf в beamer. Часто использую окружение block или похожее для вывода рисунков, а pdf дает белый фон, поэтому приходилось использовать png, а потом нашел что из inkscape можно конвертировать в tikz, замена шрифта была приятным бонусом.

Нашел причину кривого экспорта в tikz вышеуказанного примера. Он нарисован слишком хитро, отрезки нарисованы дальше чем окружность, а конвертер это не учитывает. Еще один косяк конвертора в том, что он не туда пишет информацию о повороте текста.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.