
Я хочу нарисовать простые символы CircuiTikZ поверх изображения .png. Вот что я хочу:
Вот что я сейчас получаю:
Вот мой код:
\begin{figure} [!ht]
\begin{tikzpicture}[x=1cm,y=1cm]
\node at (0,0) {\includegraphics[trim={40cm 55cm 40cm 55cm},clip,height=10cm]{images/MecanismoEscala_primer_ensayo_Variables.png}};
\node at (-3.7634,-1.5117){
\begin{circuitikz}
\draw
(0,0) --++ (-1.0778,0)
to [open,v=$v$,o-o] ++(0,0.7012)
to[short,i=$i_{a}$] ++(1.0663,0);
\end{circuitikz}
};
\end{tikzpicture}
\end{figure}\FloatBarrier
Я бы также хотел написать $v$
знаки «+» и «-» рядом с клеммами (разместив эти два знака немного дальше друг от друга, а не так, как я получаю в результате).
решение1
Прежде всего.Никогдагнездо tikzpictures! И выкладываю базовую картинку, которую в данном случае мне удалось состряпать с помощью GIMP и сохранить как uffa.png
.
Мой подход был бы таким:
- загрузите изображение как узел в начале
tikzpicture
, чтобы затем можно было писать поверх него. - Создайте своего рода сетку, чтобы иметь возможность легко ориентироваться.
- Нарисуйте все, что хотите, точно настройте координаты.
- Снимите сетку.
Давайте посмотрим: шаги 1 и 2 будут примерно такими:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {%
\includegraphics[width=10cm]{uffa.png}};
\draw[red,thin] (0,0) grid[step=1] (10,5);
\end{tikzpicture}
\end{document}
У вас есть 0,0
нижняя левая точка, и каждый шаг сетки составляет 1 см. Теперь, фон не белый (надеюсь, вы его не распечатаете, в противном случае измените его), поэтому я выбрал цвет, который получился довольно темным сине-серым с RGB на 33,40,48 (подойдет любая палитра цветов).
Теперь я рисую схему, устанавливая сине-серый цвет в качестве заливки для открытых полюсов.
\documentclass[tikz]{standalone}
\usepackage[RPvoltages, american]{circuitikz}
\begin{document}
\begin{tikzpicture}[color=white]% write in white
\node[anchor=south west,inner sep=0] (image) at (0,0) {%
\includegraphics[width=10cm]{uffa.png}};
\draw[red,thin] (0,0) grid[step=1] (10,5);
\definecolor{mybg}{RGB}{33,40,48}% with a color picker
\ctikzset{open poles fill=mybg}% tell circuitikz what is background for you
\draw (4,4) coordinate(a) to[short, i=$i_a$, o-] ++(1.8,0);
\draw (a) ++(0,-1) to[short, o-] ++(1.7,0);
\draw (a) ++(-0.3,0) to[open, v=$v$] ++(0,-1);
\end{tikzpicture}
\end{document}
Я старался использовать относительные и именованные координаты, где это возможно, чтобы минимизировать количество чисел, которые нужно подправить для получения результата. Затем вы удаляете сетку, и у вас будет: