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

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

Я использовал TikzEdtдля того, чтобы сгенерировать некоторые цифры для использования в моей диссертации. Однако, когда я включил исходный кодкопирование-вставка/\inputв основном документе under a figure environmentмой документ компилировался целую вечность без каких-либо ошибок и выдал поврежденный выходной файл PDF после отмены компиляции.

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

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

Кроме того, TikzEdtжалуется, что следующая строка с сообщением: "Не удалось проанализировать код. NoViableAltException в строке 16 в позиции 44. Отсутствует какая-то команда \end{}?". Компиляция MWE - этоздесь.

\draw[<->, толстый] (-1,0)++({\ang+90}:1) --++ (\ang:{2*cos(\ang)});

РЕДАКТИРОВАТЬ Проблема решена, и проблема была в моем использовании , \angкоторый является внутренним макросом, определенным в пакете siunitx. Парсер TikzEdt все еще жалуется, но я не знаю, является ли это реальной проблемой.

Скриншот проблемы в TikzEdtниже. Сообщение об ошибке отображается вкрасные линии. введите описание изображения здесь

решение1

Ну, вам, очевидно, нужен \begin{document}, но в остальном он прекрасно работает, преобразованный в обычный документ с изображением в figure.

\documentclass{article}
\usepackage{tikz,amsmath, amssymb,bm,color}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{decorations.markings,math}
\usetikzlibrary{calc}

\begin{document}
\begin{figure}
  \center
  \begin{tikzpicture}
    \tikzmath{\ang = 45;};
    \begin{scope}[thick,decoration={
        markings,
        mark=at position 0.5 with {\arrow{latex}}}
      ]
      \filldraw[red] (-1,0) circle (2pt)
      node[anchor=east, font = \footnotesize] at (-1,-0.2) {$\mathrm{E_0}$};
      \draw[dashed, red] (-1,0) --++({\ang+90}:1);
      \filldraw[green] (1,0) circle (2pt)
      node[anchor=west, font = \footnotesize] at (1,-0.2) {$\mathrm{E_0}$};
      \draw[postaction={decorate}, red] (-1,0) --++ (\ang:2);
      \draw[postaction={decorate}, green] (1,0) --++ (\ang:2);
      \draw[<->, thick] (-1, -0.2) -- (1, -0.2);
      \draw[dashed, green] (1,0) --++ ({\ang+90}:2.5);
      \draw[<->, thick] (-1,0)++({\ang+90}:1) --++ (\ang:{2*cos(\ang)});
      %       \draw[<->, thick] (-1,0)++({\ang+90}:1) --++ (\ang:{2*cos(\ang) });
      \node[anchor=north, font = \footnotesize]  at  (0, -0.2) {d=$\lambda/2$};
    \end{scope}
    \draw[blue, thick, dash pattern= on 25 off 7 on 50 off 7 on 10] (-2,0) -- (2, 0);
    \node[anchor=west, font = \footnotesize, blue] at (1.5,-0.05) {z}; node[near start, auto] {true}
    \draw[thick,blue,->] ([shift=(0:1)]1,0) arc (0:\ang:1);
    %   \draw[thick,blue,->] (2,0)  arc (0:\ang:1);
    \draw (1,0)++({\ang/2}:1.2) node[rotate=\ang, anchor=base, blue, font=\normalsize]{$\theta$};
    \draw ({\ang+90}:1.3) node[rotate=\ang, anchor=base, black, font=\normalsize]{$d\cos\theta$};
  \end{tikzpicture}
  \caption{Picture}
\end{figure}
\end{document}

фигура

Возможно, я не понимаю вопроса.

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

Добавление siunitxприводит к ошибке, хотя ВАША ли это ошибка, я не знаю. В частности, xparseжалуется, что \angне расширяется. Это происходит потому, что текущий код вызывает \ang, который больше не является неназначенным именем макроса. Поэтому он пытается расшириться \angдо своего определения, но не может. (И если бы мог, результаты тоже были бы не очень хорошими.)

Решение — использовать новое имя, например \myangle.

\documentclass{article}
\usepackage{tikz,amsmath,amssymb,bm}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{decorations.markings,math}
\usetikzlibrary{calc}
\usepackage{siunitx}

\begin{document}
\begin{figure}
  \center
  \begin{tikzpicture}
    \tikzmath{\myangle = 45;};
    \begin{scope}[thick,decoration={
        markings,
        mark=at position 0.5 with {\arrow{latex}}}
      ]
      \filldraw[red] (-1,0) circle (2pt)
      node[anchor=east, font = \footnotesize] at (-1,-0.2) {$\mathrm{E_0}$};
      \draw[dashed, red] (-1,0) --++({\myangle+90}:1);
      \filldraw[green] (1,0) circle (2pt)
      node[anchor=west, font = \footnotesize] at (1,-0.2) {$\mathrm{E_0}$};
      \draw[postaction={decorate}, red] (-1,0) --++ (\myangle:2);
      \draw[postaction={decorate}, green] (1,0) --++ (\myangle:2);
      \draw[<->, thick] (-1, -0.2) -- (1, -0.2);
      \draw[dashed, green] (1,0) --++ ({\myangle+90}:2.5);
      \draw[<->, thick] (-1,0)++({\myangle+90}:1) --++ (\myangle:{2*cos(\myangle)});
      %       \draw[<->, thick] (-1,0)++({\myangle+90}:1) --++ (\myangle:{2*cos(\myangle) });
      \node[anchor=north, font = \footnotesize]  at  (0, -0.2) {d=$\lambda/2$};
    \end{scope}
    \draw[blue, thick, dash pattern= on 25 off 7 on 50 off 7 on 10] (-2,0) -- (2, 0);
    \node[anchor=west, font = \footnotesize, blue] at (1.5,-0.05) {z}; node[near start, auto] {true}
    \draw[thick,blue,->] ([shift=(0:1)]1,0) arc (0:\myangle:1);
    %   \draw[thick,blue,->] (2,0)  arc (0:\myangle:1);
    \draw (1,0)++({\myangle/2}:1.2) node[rotate=\myangle, anchor=base, blue, font=\normalsize]{$\theta$};
    \draw ({\myangle+90}:1.3) node[rotate=\myangle, anchor=base, black, font=\normalsize]{$d\cos\theta$};
  \end{tikzpicture}
  \caption{Picture}
\end{figure}
\end{document}

компилируется в вывод, показанный выше.

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