circuitikz、subfig 和电流方向的问题

circuitikz、subfig 和电流方向的问题

我已经搜索了几个小时,却找不到任何关于到底哪里出了问题的线索,只是没有人尝试做我想要做的事情(?)。

我需要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}

演示

相关内容