我在使用 时遇到以下问题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}
}
这将产生:
注意:我还通过用菱形替换上方代码片段中的三角形,创建了一个带有虚线的菱形标记。
这里我有两个问题:
- 为了让三角形出现在线的中间,我必须放置
at (1mm,0)
而不是(2.5mm,0)
。当使用圆圈(即o
)时,放置at (2.5mm,0)
就可以居中。有人知道为什么我需要为不同的标记设置不同的位置吗? - 正如文本中(后来添加的)红色方块所示:使用这些方块时,
tikzpictures
文本中的间距看起来很奇怪,好像框的宽度太大。调整宽度(通过resizebox
)并没有解决问题。有谁知道如何“巧妙地”将 tikzpicture 嵌入文本中?
干杯,罗伯特
答案1
以下是可以解决您两个问题的解决方案:
以下是我解决您问题的方法:
垂直对齐:我在你的两张 TikZ 图片中定义了一个共同点(名为
(base)
)(0,-.5em)
。并且我将其定义为基线的参考(参见baseline=(base)]%
每个 的全局选项tikzpicture
)。这意味着这个特定点将与你的文本基线垂直对齐。水平空白:在宏定义中,第一行以空格字符 (
) 结尾。这意味着如果您换行第 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
相对于虚线水平对齐。)