使用Circuitikz绘制电路时电阻R₁与周边线路连接不顺畅问题求助

问题原因
你自定义的\myDRL命令中,在同一段\draw路径里同时进行了连续线路绘制和坐标跳转操作:绘制完R₁和后续短线后,直接跳转至运放反相输入端绘制反馈回路,导致R₁右端与运放同相输入端的连接点不属于连续路径的一部分,Circuitikz无法自动处理该点的线径衔接,就会出现连接不平滑、有小凸起或缺口的问题。
解决方法
- 拆分
\myDRL命令内的单段\draw为多段独立路径:先完成输入到运放同相端的连续路径绘制,再单独绘制反馈回路和输出路径,避免路径跳转打断衔接点的平滑处理。 - 调整绘制逻辑,先定位运放位置,再从运放输入端向左绘制R₁到输入节点,进一步降低坐标错位概率。
修改后完整代码
\documentclass[border=1mm]{standalone} \usepackage{amsmath, amssymb, mathtools} \usepackage{siunitx} \usepackage[]{circuitikz} \usetikzlibrary{positioning, calc} \newcommand\myVoltageBuffer[2]{% %1: ID amplifier, %2 start coordinate \draw #2 coordinate(opamp#1-in) to[short] ++(1,0) node[op amp, noinv input up, anchor=+](opamp#1){$A_#1$} (opamp#1.-) -- ++(0,-1) coordinate(opamp#1-feedback) (opamp#1-feedback) -| (opamp#1.out) to [short, *-] ++(1,0) coordinate(opamp#1-out); } \newcommand\myDRL[6]{% %1: ID amplifier, %2 start coordinate, %3 R gain %4 R series, %5 C series, %6 R parallel % 先定位运放位置,避免路径跳转 \node[op amp, anchor=+](opamp#1) at ($#2 + (2,0)$) {$A_#1$}; % 连续绘制输入到运放同相端的路径,保证衔接平滑 \draw #2 coordinate(opamp#1-in) to[R=#3] ++(1,0) to [short] (opamp#1.+); % 单独绘制反馈回路 \draw (opamp#1.-) -- ++(0, 1) coordinate(opamp#1-feedback) to [short, -*] ++(0, 0) to [R=#4] ++(1.5, 0) to [C=#5] ++(1.5, 0) to [short, -*] ++(0, 0) coordinate(opamp#1-feedback-C-point); \draw (opamp#1-feedback) -- ++(0, 1.5) to [R=#6] ++(3, 0) -| (opamp#1-feedback-C-point) to [short, -*] ++(0, -1.5) coordinate(opamp#1-last-bullet); % 单独绘制输出路径 \draw (opamp#1.out) -- (opamp#1-last-bullet) -- ++(1, 0) coordinate(opamp#1-out); } \begin{document} \begin{circuitikz}[american, transform shape, use fpu reciprocal,] \myVoltageBuffer{1}{ (0, 0) }{}{} \node [ocirc] at (opamp1-in) {}; \myDRL{2}{ (opamp1-out) }{ $R_1$ }{ $R_s$ }{ $C_s$ }{ $R_{\parallel}$ } \node [ocirc] at (opamp2-out) {}; \end{circuitikz} \end{document}
内容的提问来源于stack exchange,提问作者aheuchamps
相关产品推荐
相关产品推荐

