在文本中完美嵌入 tikzpicture

在文本中完美嵌入 tikzpicture

我在使用 时遇到以下问题tikzpicture。我在文本中添加了一个图,其中有不同的线条样式和标记。为了更好地引用单个曲线,我决定使用 构建线条和标记样式tikzpicture,例如带有三角形的虚线:

\newcommand{\dashedTri}{ 
            \begin{tikzpicture}
                \draw[black,dashed,line width=1.5pt](0,0) -- (5mm,0); 
                    \node[very thick, mark size=3pt,color=black] at (1mm,0){ 
                        \pgfuseplotmark{triangle} 
                    };
            \end{tikzpicture}
}

这将产生:

在此处输入图片描述

注意:我还通过用菱形替换上方代码片段中的三角形,创建了一个带有虚线的菱形标记。

这里我有两个问题:

  1. 为了让三角形出现在线的中间,我必须放置at (1mm,0)而不是(2.5mm,0)。当使用圆圈(即o)时,放置at (2.5mm,0)就可以居中。有人知道为什么我需要为不同的标记设置不同的位置吗?
  2. 正如文本中(后来添加的)红色方块所示:使用这些方块时,tikzpictures文本中的间距看起来很奇怪,好像框的宽度太大。调整宽度(通过resizebox)并没有解决问题。有谁知道如何“巧妙地”将 tikzpicture 嵌入文本中?

干杯,罗伯特

答案1

以下是可以解决您两个问题的解决方案:

在此处输入图片描述

以下是我解决您问题的方法:

  1. 垂直对齐:我在你的两张 TikZ 图片中定义了一个共同点(名为(base)(0,-.5em)。并且我将其定义为基线的参考(参见baseline=(base)]%每个 的全局选项tikzpicture)。这意味着这个特定点将与你的文本基线垂直对齐。

  2. 水平空白:在宏定义中,第一行以空格字符 ( ) 结尾。这意味着如果您换行第 1 行和第 2 行,您的代码将如下所示:\newcommand{\dashedTri}{ \begin{tikzpicture};即,您在宏定义中嵌入一个空格,该空格添加到文档中命令前的空格之上.tex


\documentclass{scrartcl}
    \usepackage{tikz}
    \usetikzlibrary{plotmarks}

    \newcommand{\dashedTri}{%
        \begin{tikzpicture}[inner sep=0pt, baseline=(base)]%
        \draw[black,dashed,line width=1.5pt](0,0) -- (5mm,0); 
        \node[very thick, mark size=3pt,color=black] at (2.5mm,0){% 
            \pgfuseplotmark{triangle}%
        };
        \node (base) at (0,-.5ex) {};
        \end{tikzpicture}%
    }

    \newcommand{\dashedDia}{%
        \begin{tikzpicture}[inner sep=0pt,baseline=(base)]%
        \draw[black,dashed,line width=1.5pt](0,0) -- (5mm,0); 
        \node[very thick, mark size=3pt,color=black] at (2.5mm,0){% 
            \pgfuseplotmark{diamond}%
        };
        \node (base) at (0,-.5ex) {};
        \end{tikzpicture}%
    }
\begin{document}
    Foo \dashedTri{} bar \dashedDia{} baz.
\end{document}

(请注意,我在您的代码中将其改为\node[very thick, mark size=3pt,color=black] at (1mm,0){\node[very thick, mark size=3pt,color=black] at (2.5mm,0){1mm改为2.5mm),以便plotmark相对于虚线水平对齐。)

相关内容