![circuitikz、subfig 和电流方向的问题](https://linux22.com/image/331797/circuitikz%E3%80%81subfig%20%E5%92%8C%E7%94%B5%E6%B5%81%E6%96%B9%E5%90%91%E7%9A%84%E9%97%AE%E9%A2%98.png)
我已经搜索了几个小时,却找不到任何关于到底哪里出了问题的线索,只是没有人尝试做我想要做的事情(?)。
我需要circuitikz
使用 tufte-book 模板在文档中的同一张图内包含多个电路(通过)(我不需要参考文献,只需要子浮点数内的某些标题)。
这是我打算做的事情:
\documentclass[justified]{tufte-handout}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[main=spanish,english]{babel}
\usepackage[caption=false]{subfig}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{shadings}
\usetikzlibrary{babel}
\usepackage{circuitikz}
\ctikzset{bipoles/length=.8cm}
\ctikzset{label/align=straight}
\usepackage[group-separator={.},output-decimal-marker={,}]{siunitx}
\begin{document}
\begin{figure}
\subfloat[][]{
\begin{circuitikz}[scale=.8]
\draw (0,0) to [battery1,l=\SI{6}{\volt}] (2,0);
% This line works:
%\draw (0,0) to [R,l=\SI{2}{\ohm},i=$I_1$] (0,2);
% This doesn't, and it's the one I need working:
\draw (0,0) to [R,l=\SI{2}{\ohm},i<=$I_1$] (0,2);
\draw (0,2) to [short] (2,2);
\draw (2,2) to [R,l=\SI{2}{\ohm},i=$I_2$] (2,0);
\draw (2,0) to [short] (4,0) to [R,l_=\SI{4}{\ohm},i=$I_3$]
(4,2) to [battery1,l_=\SI{8}{\volt}] (2,2);
\end{circuitikz}
}
\end{figure}
\end{document}
问题是,对于 I_1,我需要特定的方向,因此我需要包含内部的<
,i<=$I_1$
但是那个括号是导致问题的原因(如果我删除它,一切都会顺利进行)。我知道箭头与 Babel 冲突,所以我包含了修复该问题所需的 tikz 库,但即使删除了 Babel,问题仍然会出现。
我的选择是手动在图内为每个子图创建一个标签,但我不知道如何正确对齐它或最好的方法,并且我读到子标题还不适用于 Tufte 书籍。
我在 Debian Testing(Stretch)上使用最新的 TeXLive 完整安装。
谢谢!
答案1
我不确定你想让箭头指向哪个方向,所以我让它们全部指向上方。
至于子图和与 babel 的兼容性,最简单的解决方案是创建自己的子图。Babel 定义了 \figurename 和 \listfigurename,但您实际上不需要子图名称。唯一的兼容性问题是字母表发生变化时。
\documentclass[justified]{tufte-handout}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[main=spanish,english]{babel}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{shadings}
\usetikzlibrary{babel}
\usepackage{circuitikz}
\ctikzset{bipoles/length=.8cm}
\ctikzset{label/align=straight}
\usepackage[group-separator={.},output-decimal-marker={,}]{siunitx}
\newcounter{subfig}[figure]
\newcommand{\subcaption}[1]% #1 = text
{\bgroup
\stepcounter{subfig}%
\sbox0{\textbf{(\Alph{subfig})}\ #1}%
\par\vskip\abovecaptionskip
\ifdim\wd0<\linewidth \makebox[\linewidth]{\box0}%
\else\sbox0{\textbf{(\Alph{subfig})}\ }%
\usebox0\parbox[t]{\dimexpr\linewidth-\wd0}{#1}%
\fi
\par\vskip\belowcaptionskip
\egroup}
\begin{document}
\begin{figure}
\begin{minipage}[b]{0.5\textwidth}
\centering
\begin{circuitikz}[scale=.8]
\draw (0,0) to [battery1,l=\SI{6}{\volt}] (2,0);
% This line works:
%\draw (0,0) to [R,l=\SI{2}{\ohm},i=$I_1$] (0,2);
% This doesn't, and it's the one I need working:
\draw (0,0) to [R,l=\SI{2}{\ohm},i=$I_1$] (0,2);
\draw (0,2) to [short] (2,2);
\draw (2,0) to [R,l_=\SI{2}{\ohm},i=$I_2$] (2,2);
\draw (2,0) to [short] (4,0) to [R,l_=\SI{4}{\ohm},i=$I_3$]
(4,2) to [battery1,l_=\SI{8}{\volt}] (2,2);
\end{circuitikz}
\subcaption{test}
\end{minipage}
\end{figure}
\end{document}