Экспорт из Inkscape в LaTeX — через TikZ

Экспорт из Inkscape в LaTeX — через TikZ

Я знаю только самые основы TikZ, использовал его только для создания симпатичной блок-схемы для одного из моих документов. Недавно я узнал, что можно использовать Inkscape и экспортировать в TikZ.

Каковы ограничения рабочего процесса Inkscape->TikZ? Есть ли веская причина потратить время на изучение TikZ (который, как мне сказали, имеет довольно крутую кривую обучения), а не просто экспортировать в TikZ из Inkscape?

решение1

Редактировать:@XiaodongQi комментирует ниже, что

Те же самые опции больше не доступны в новой версии Inkscape. Но есть похожие опции при сохранении PDF.

Вы можете сохранить ваши рисунки inkscape как pdf и вставить их в ваш документ с помощью \includegraphics. Если в ваших рисунках есть текст, вы можете выбрать опцию PDF+LaTeX в меню сохранения inkscape как pdf. Это создаст файл pdf_tex. Вы создаете \inputэтот файл, а TeX выполняет набор текста.

В инкскейпе:

введите описание изображения здесь

Сохранение из inkscape после выбора сохранения в формате pdf. Inkscape записывает файл topview.pdf_tex:

введите описание изображения здесь

В документе:

\begin{figure}[h]
\centering{
\resizebox{75mm}{!}{\input{images/topview.pdf_tex}}
\caption{Top view.}
\label{fig:topView}
}
\end{figure}

Выход:

введите описание изображения здесь

Это явно картинка, которую можно нарисовать с помощью tikz, но я решил этого не делать по причинам, которые вы изложили в своем ответе @HarishKumar — более длительная кривая обучения tikz и предпочтение wysiwyg для эпизодического использования. Если вам действительно нужно точное размещение (линии действительно сходятся на углах), вы можете сделать это с помощью функций привязки inkscape. Я их еще не пробовал.

решение2

После экспорта (описанного Итаном Болкером) используйте следующий фрагмент для встраивания изображения, созданного Inscape:

\begin{figure}
\def\svgwidth{\linewidth}
\input{img/filename.pdf_tex}
\caption{}
\end{figure}

Использование \def\svgwidth{desired width}вместо \resizeboxwillсохранить размер шрифта. Это рекомендуемый способ, описанный в заголовке сгенерированного файла:

%% Creator: Inkscape 0.91_64bit, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file '_masks.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%%   \input{<filename>.pdf_tex}
%%  instead of
%%   \includegraphics{<filename>.pdf}
%% To scale the image, write
%%   \def\svgwidth{<desired width>}
%%   \input{<filename>.pdf_tex}
%%  instead of
%%   \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%%   \usepackage{import}
%% in the preamble, and then including the image with
%%   \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%%   \graphicspath{{<path to file>/}}
%% 
%% For more information, please see info/svg-inkscape on CTAN:
%%   http://tug.ctan.org/tex-archive/info/svg-inkscape
%%

решение3

В качестве другой альтернативы есть инструментSVG2TikZ(ранее Inkscape2TikZ), который можно использовать для генерации кода TikZ.

Если вы установите пакет Python из репозитория GitHub, вы можете преобразовать SVG (который можно экспортировать из Inkscape) в исходный код TeX с помощью TikZ следующим образом:

svg2tikz a.svg > a.tex

Его также можно установить как расширение Inkscape.

Связанный контент