%20%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%B4%D1%80%D1%83%D0%B3%20%D0%B4%D1%80%D1%83%D0%B3%D0%B0.%20%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9%20%D1%87%D0%B0%D1%81%D1%82%D0%B5%D0%B9%20%D1%81%D1%85%D0%B5%D0%BC%D1%8B%20%D0%B4%D0%BB%D1%8F%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BE%D0%BA%20%D1%81%D0%B5%D1%82%D0%BA%D0%B8%20%22%D0%B8%D0%BD%D1%82%D1%83%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%22%20%D1%81%20%22%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%22.png)
Этот вопрос является постоянным моимдругой. Из-за своей репутации я не могу добавлять комментарии к ответам. Поэтому я пользуюсь случаем поблагодаритьДжон Кормилоза его ответ на мой первоначальный вопрос. Также извините за мой неправильный английский.
На вопрос:
Для схем я использую синтаксис circuitikz
, пример
\begin{circuitikz}
\draw
(0,0) to [V = $U$] (0,3)
to [short, i = $I$, -*] (3,3) -- (6,3)
to [R = $R_2$, v = $U_2$, i = $I_2$] (6,0) -- (0,0)
(3,3) to [R = $R_1$, v = $U_1$, i = $I_1$, -*] (3,0);
\end{circuitikz}
Это очень просто и интуитивно понятно. Но когда я хочу добавить стрелку сетки в схему, я использую (в дополнение к коду выше; сетка один в качестве примера):
\draw
%
% mesh one (detailed explanation of the implementation)
%
[<-,% direction of the arrow
> = triangle 45,% kind of the arrow end
path picture =% allows ''to paint a picture'' inside of an other ''picture''
{\node[anchor = center]% position of the inner ''picture''
at (path picture bounding box.center)% bordering rectangle,
% centered inside the arrow (arrow is the outer ''picture'')
{$M_1$};}]% text of the inner ''picture''
(1.75,1)% coordinates of the arrow end
arc% arc-shaped arrow
(-60:% angle of the arrow start
170:% angle of the arrow end
.5);% radius of the arc
Результат обоих фрагментов кода смотрите по ссылке выше (мой первоначальный вопрос).
Мне кажется, что такой объем кода для «всего лишь» одной стрелки слишком велик, сложен и неинтуитивен.
Что я хочу:
1.Размещение частей схемы (как узлов с именами) относительно друг друга, как в примере «Petri-Net» в PGF
руководстве на странице 51 (подраздел 3.8):
В сочетании с circuitikz
синтаксисом (см. первый пример кода).
2.Использование названий деталей схемы для интуитивного размещения стрелок сетки с помощью макроса controls
(стр. 748, PGF
руководство), как это сделал Джон Кормило в своем ответе на мой первоначальный вопрос:
\node (M 3) [below] at (0,0) {\phantom{$M_3$}};% reserving space for M 3 under the circuit
\draw
[->, > = triangle 45] (current bounding box.east) .. controls
(current bounding box.south east) ..
(M 3.south) node[above, pos = .95] {$M_3$};% see below
% above: location of the inscription ''M_3'' relative to the arrow end
% pos=: location of the inscription ''M_3'' on the ''x''-axis (arrow beginning is zero,
% arrow end is one)
Возможно ли это? Если да, то как я могу это сделать? Надеюсь, вы понимаете мои намерения.
Заранее спасибо за ваши ответы и помощь!
решение1
Вместо того, чтобы поместить узел в центр дуги, я поместил дугу вокруг узла. Тот же результат, меньше нажатий клавиш. Есть также несколько способов избежать повторения одних и тех же опций снова и снова. Я использовал область действия, так как изменения сохраняются только в течение области действия.
Большая часть упрощения достигнута за счет удаления комментариев.
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage{amsmath}
\usepackage[european]{circuitikz}
\usepackage{showframe}
\begin{document}
\noindent
\begin{minipage}[t]{.5\linewidth}
\begin{circuitikz}[baseline=(current bounding box.north)]
%
% circuit
%
\draw
(0,0) to [V = $U$] (0,3)
to [short, i = $I$, -*] (3,3) -- (6,3)
to [R = $R_2$, v = $U_2$, i = $I_2$] (6,0) -- (0,0)
(3,3) to [R = $R_1$, v = $U_1$, i = $I_1$, -*] (3,0);
%
% mesh arrows
%
\begin{scope}[>=triangle 45]
\draw[<-] (1.5,1.5) node{$M_1$} +(.25,-.433) arc(-60:170:.5);
\draw[<-] (4.5,1.5) node{$M_2$} +(.25,-.433) arc(-60:170:.5);
\node (mesh3) [below] at (0,0) {\phantom{$M_3$}};% reserve space below circuit for M_3
\draw[->, thick] (current bounding box.east)% not the only way, just easy
.. controls (current bounding box.south east) ..
(mesh3.south) node[above,pos=.9] {$M_3$};
\end{scope}
\end{circuitikz}
\end{minipage}
\hfill
\begin{minipage}[t]{.45\linewidth}
%
% equations for mesh and knot
%
\begin{align*}
&K : \quad I = I_1 + I_2\\
&M_1: \quad -U = -U_1\Leftrightarrow U = U_1 = R_1I_1\\
&M_2: \quad U_1 = -U_2\\
&M_3: \quad -U = -U_2\Leftrightarrow U = U_2 = R_2I_2
\end{align*}
\end{minipage}
\end{document}