如何将张力符号从箭头更改为一对加号和减号?

如何将张力符号从箭头更改为一对加号和减号?
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-circ}
\begin{document}
\begin{pspicture}[showgrid](4,4)
\pnodes
    (0,2){A}
    (4,2){B}
    \resistor
    [
        intensitylabel=$i_1$,
        intensitylabeloffset=.3,
        tensionlabel=$v_1$,
        tensionoffset=-.5,
        tensionlabeloffset=-.8,
    ](A)(B){$R$}
\end{pspicture}
\end{document}

在此处输入图片描述

我想将上图改为下图。

在此处输入图片描述

如何将张力符号从箭头更改为一对加号和减号?

答案1

来自pst-circ.texhttp://texnik.dante.de/tex/generic/pst-circ/或者今天最新的 TeXLive 更新知道tensionstyle=pm(默认为tensionstyle=line)。应该适用于所有元素。

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-circ}
\begin{document}
\begin{pspicture}[showgrid](4,4)
\pnodes(0,2){A}(4,2){B}
\resistor[
        intensitylabel=$i_1$,
        intensitylabeloffset=.3,
        tensionlabel=$v_1$,
        tensionoffset=-.5,
        tensionlabeloffset=-.8,
        tensionstyle=pm         ](A)(B){$R$}
\end{pspicture}
\end{document}

在此处输入图片描述

答案2

以下 MWE 提供了一个带星号的版本,\resistor其中设置了+/-而不是箭头:

在此处输入图片描述

\documentclass{article}
\usepackage{pst-circ}% http://ctan.org/pkg/pst-circ
\makeatletter
\let\@oldresistor\resistor
\def\resistor{\@ifstar\@newresistor\@oldresistor}
\def\@newresistor{\@ifnextchar[\@newresistor@i{\@newresistor@i[]}}
\def\@newresistor@i[#1](#2)(#3)#4{{%
  \def\pst@tension##1##2{%
    \psset{linestyle=none}% Remove lines
    \ifPst@tension
      \pcline[arrows=-,fillstyle=none,%linestyle=none,
        offset=\psk@tension@offset](##1)(dipole@1)
      \ncput[npos=.9]{\pnode{tension@1}}
      \pcline[arrows=-,fillstyle=none,%linestyle=none,
        offset=-\psk@tension@offset](##2)(dipole@2)
      \ncput[npos=.9]{\pnode{tension@2}}
      \ifPst@directconvention
        \ifPst@Dconvention
          \rput{0}(tension@1){$\scriptstyle-$}\rput{0}(tension@2){$\scriptstyle+$}
        \else
          \rput{0}(tension@1){$\scriptstyle+$}\rput{0}(tension@2){$\scriptstyle-$}
        \fi
      \else
        \ifPst@Dconvention
          \rput{0}(tension@1){$\scriptstyle+$}\rput{0}(tension@2){$\scriptstyle-$}
        \else
          \rput{0}(tension@1){$\scriptstyle-$}\rput{0}(tension@2){$\scriptstyle+$}
        \fi
      \fi
      \pcline[arrows=-,linestyle=none,fillstyle=none,%
        offset=\psk@tension@label@offset](dipole@1)(dipole@2)
      \ncput[nrot=\psk@label@angle]{%
    \csname\psk@tension@labelcolor\endcsname\psk@tension@label}
    \fi
  }
  \@oldresistor[#1](#2)(#3){#4}%
}}
\makeatother
\begin{document}
\begin{pspicture}[showgrid](4,4)
\pnodes
    (0,2){A}
    (4,2){B}
    \resistor*
    [
        intensitylabel=$i_1$,
        intensitylabeloffset=.3,
        tensionlabel=$v_1$,
        tensionoffset=-.5,
        tensionlabeloffset=-.8,
    ](A)(B){$R$}
\end{pspicture}
\end{document}

该宏\pst@tension负责绘制 下方的箭头和标签\resistor。它已被更改为使用 放置 移动线端点的位置(以前使用 放置 位于A/B和电阻边缘之间的中间位置npos=.5npos=.9。此外,现在不再使用箭头绘制线,而是在相应的“张力”端\rput绘制+/ 。 的整个定义保持不变,因此它应该可以与其他选项/定义(包括方向变化)一起使用。-\pst@tension

相关内容