交叉乘法分解图

交叉乘法分解图

我想知道是否有更好的方法通过 Tikz 在因式分解中进行交叉相乘来生成此图表。

我到目前为止已经这样做了,但箭头并不总是与线性因素对齐,所以我必须不断地调整它。

\begin{center}
   \begin{tikzpicture}[scale=0.7]
\draw[<->] (-0.7,-1) -- (0.7,1);
\draw[<->] (-0.7,1) -- (0.7,-1);
\draw[color=black] (0.85,0) node[right] {$=adx+bcx\;$\textsf{(Middle Term)}};
\draw[color=black] (0.,1) node[above] {$(ax+b)$};
\draw[color=black] (0.,-1.) node[below] {$(cx+d)$};
\end{tikzpicture}
\end{center}

在此处输入图片描述

感谢您的帮助!

答案1

这是一种方法。当您的公式内容差异太大时,这种方法仍然需要手动调整。但是,出于以下几个原因,我建议采用这种方法。

  • standalone在开发过程中使用起来更加方便:它可以根据需要调整“纸张大小”
  • 您不需要Tikz在主文档中包含代码,而是可以在主 via 包中显示已编译的 Tikz 图表(pdf)graphicx,它仍然是矢量格式(无位图伪影)
  • 根据需要放置节点;根据需要选择样式,将它们放在开头
  • 节点的参考边(C)将是west,即 将(.7,0)是 (反之亦然)
  • 正确的尖端位置确实取决于公式的垂直距离和inner sep左公式节点的距离
  • 可视化该样式lf绘制节点形状;设置为draw=none稍后
  • 为了定位箭头,我使用极坐标表示法:
  • 从节点中心开始,0 度为右侧,射线与节点形状的交点在哪里?这就是您想要的(估计)角度

因此,对于使用此方法进行的重大设计变更:

  • 将所有.7值更改为您需要的值
  • 调整极角.215.30.145.-30

对于更复杂(更自动化)的方法,请参阅您接受的解决方案tikzmarksoverlay如果没有测试,箭头尖端可能会或可能不会指向 4 个因素中心

\documentclass[10pt,border=3mm,tikz]{standalone}

\begin{document}
 \begin{tikzpicture}[
    rf/.style={anchor=west},
    lf/.style={inner sep=1pt,draw=gray!70},% later remove draw or seet draw=none
 ]
    % ~~~ nodes with formulas ~~~~~~~~~~~~
    \node[lf]   (A) at ( 0, .7) {$(ax+b)$};     
    \node[lf]   (B) at ( 0,-.7) {$(cx+d)$}; 
    \node[rf]   (C) at (.7,0) {$=adx+bcx\;$\textsf{(Middle Term)}};
    
    % ~~~ crossing ~~~~~~~~~~~~~
    \draw[<->] (A.215) -- (B.30);
    \draw[<->] (B.145) -- (A.-30);
 \end{tikzpicture}

\end{document}

绘制节点形状: 和

没有任何: 没有任何

附言

以下是您可以做的一些事情你的评论附言

突出显示箭头

非常简单:

    \draw[<->,red,thick] (B.145) -- (A.-30);    % <<<

决定是否让这些选项成为本地选项(如图所示)或移至开头的样式部分(如rf等)。标准可以是代码清理、泛化、重用、空间等。

临时救助网格

通常,对所需坐标有更好的了解是件好事。除了经验和良好的猜测帮助之外,网格还可以救命:

    % ~~~ help grids: delete later or comment out ~~~~~~~~~~
    \draw[blue!10,step=5mm] (0,0) grid (-1,1); 
    \draw[blue!10         ] (1,0) grid (4,-1); 

Tikz 标准的椭圆

你只需画出它们,即:

  • 路径以 开始\,以 结束;
  • 在中间做一些动作(就像在电影场景中一样)
  • draw,,red在上述位置
  • 在那里画一个椭圆
  • 使用风格ell
...
    ell/.style={x radius=1.3mm,y radius=2.5mm}, % <<<
...

    \draw[red]  ( .4, .72) ellipse [ell];

如果您希望对路径执行更多操作,请将节点放在最后一个位置,如下所示:

    \draw[red]  (-.4,-.72) ellipse [ell]  node[yshift=-5mm]{\dbend};

这恰好是 Knuth 的警告标志之一,移至下方。它是常规的 Latex 文本,位于节点内{braces}。您可以在以下位置找到字体符号和所需的包综合 LaTeX 符号列表

使用形状库

它被描述在手册

请记住,节点具有形状,默认情况下是矩形,而此库允许您更改所述(外部)形状。出于演示目的,我使用了菱形。

请记住,这些“符号”仍然是节点。因此,要更改其大小,请使用节点语句,例如等minimum widthminimum size但不能使用半径等。

是的,您可以在本地添加更多自定义样式,例如dashed

...
    dmn/.style={shape=diamond,,minimum size=7mm,draw,purple},
...
    \node[dmn,dashed] at (2.3,0) {};

增强代码

\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{shapes.geometric}               % <<<
\usepackage{manfnt}                             % <<< Knuth's warning sign

\begin{document}
 \begin{tikzpicture}[
    rf/.style={anchor=west},
    lf/.style={inner sep=1pt},                  % <<<
    % ~~~ standard Tikz ~~~~~~~~~~~~
    ell/.style={x radius=1.3mm,y radius=2.5mm}, % <<<
    % ~~~ using tikzlibrary ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    dmn/.style={shape=diamond,,minimum size=7mm,draw,purple},
 ]
    % ~~~ help grids: delete later or comment out ~~~~~~~~~~
    \draw[blue!10,step=5mm] (0,0) grid (-1,1); 
    \draw[blue!10         ] (1,0) grid (4,-1); 
 
    % ~~~ nodes with formulas ~~~~~~~~~~~~
    \node[lf]   (A) at ( 0, .7) {$(ax+b)$};     
    \node[lf]   (B) at ( 0,-.7) {$(cx+d)$}; 
    \node[rf]   (C) at (.7,0) {$=adx+bcx\;$\textsf{(Middle Term)}};
    
    % ~~~ crossing ~~~~~~~~~~~~~
    \draw[<->]           (A.215) -- (B. 30);
    \draw[<->,red,thick] (B.145) -- (A.-30);    % <<<
    
    % ~~~ some symbols ~~~~~~~~~~~~~~~~~~       % <<<
    \draw[red]  ( .4, .72) ellipse [ell];
    \draw[red]  (-.4,-.72) ellipse [ell]  node[yshift=-5mm]{\dbend};
    
    \node[dmn,dashed] at (2.3,0) {};
 \end{tikzpicture}

\end{document}

相关内容