Извлечь одну из нескольких картинок tikzpictures из tex-файла

Извлечь одну из нескольких картинок tikzpictures из tex-файла

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

Во время написания диссертации у меня возникла проблема с вводом графиков: я получил результаты расчетов, перечисленные в файлах .txt, и я хочу избежать создания собственного файла tex для каждого графика. Поэтому моя идея заключается в том, чтобы поместить все диаграммы в один файл, различая их собственной средой "tikzpicture". Теперь мне не хватает способа указать моему основному документу вводить только, скажем, третью или пятую диаграмму из этого файла tex. Есть ли способ сделать это? Может быть, дать каждому tikzpicture что-то вроде тега?

Моя цель — а) создавать меньше файлов б) определить формат для всех моих диаграмм, и в случае, если я захочу изменить его, сделать это нужно будет только один раз, а не во всех файлах диаграмм.

Если это слишком сложно, может быть, вы предложите другой способ реализации?

Заранее спасибо.

решение1

Самым простым, но и неряшливым решением было бы определение \newcommand, для каждого tikzpicture, который вы создаете в своем .tex-файле, а затем вставка его в ваш основной файл.

У вас может быть pictures.texтакой файл:

\newcommand{\tikzI}{
  \begin{tikzpicture}
    <insert tikz contents here>
  \end{tikzpicture}
}

\newcommand{\tikzII}{
  \begin{tikzpicture}
    <another tikzpicture>
  \end{tikzpicture}
}

Хотя ваш основной файл может выглядеть так:

<preamble>
\begin{document}
\input{pictures}

<some text here>
\tikzI
<more text>
\tikzII
\end{document}

Однако, как предположил Алан Манн, может быть проще и удобнее назначить каждую картинку отдельному файлу и просто вызывать эти файлы отдельно для каждого tikzpicture. (Создав каталог специально для tikzpictures, чтобы они не загромождали ваш основной каталог)

решение2

Я не думаю, что вам следует помещать все ваши изображения в один файл. Гораздо проще управлять несколькими файлами в долгосрочной перспективе.

Это идеальный вариант использования для standaloneкомбинации пакета и класса. Каждый отдельный графический элемент может быть создан как standaloneдокумент и протестирован сам по себе, но затем они могут быть введены в главный документ с помощью standaloneпакета. Вы можете поместить ваши общие стили TikZ в небольшой пакет. Вот пример.

Поместите общие стили TikZ в пакет

Сначала мы создаем пакет наших стилей TikZ. Я только что определил один стиль в качестве примера.

\ProvidesPackage{mytikzstyles}[2017/04/30]
\tikzset{my line/.style={red,very thick}}

Сохраните этот документ mytikzstyles.styв той же папке, что и ваш документ, или, если вы используете их для многих документов, поместите его в локальную texmfпапку в формате <path-to-local-texmf>/tex/latex/mytikzstyles/.

Создавайте индивидуальные standaloneдокументы изображений

Далее мы создаем standaloneдокументы классов для каждого изображения. Преимущество этого в том, что вы можете тестировать и настраивать их индивидуально, поскольку это полностью компилируемые документы. В каждом документе вам просто нужно добавить, \usepackage{mytikzstyles}чтобы получить доступ к общим стилям, которые вы создали.

Image-1.tex

\documentclass[tikz=true,border=10pt]{standalone}
\usepackage{mytikzstyles}
\begin{document}
\begin{tikzpicture}
\draw[my line] (0,0)  -- (0,3)  -- (3,3) -- cycle;
\end{tikzpicture}
\end{document}

Image-2.tex

\documentclass[tikz=true,border=10pt]{standalone}
\usepackage{mytikzstyles}
\begin{document}
\begin{tikzpicture}
\draw[my line] (0,0)  -- (0,3)  -- (3,0) -- (3,3) -- cycle;
\end{tikzpicture}
\end{document}

Используйте standaloneкласс для ввода файлов

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

Вот пример:

\documentclass{article}
\usepackage{standalone}
\usepackage{tikz}
\usepackage{mytikzstyles}
\begin{document}
\begin{figure}
\centering
\input{Image-2}
\caption{This is image 2}
\end{figure}
\begin{figure}
\centering
\input{Image-1}
\caption{This is image 1}
\end{figure}
\end{document}

вывод кода

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