Я использовал 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}
компилируется в вывод, показанный выше.