tikz-pgf 源代码
\[\begin{tikzpicture}
\def\a{1.5} \def\b{2}
\path
(-\a,0) node (A) {$A$}
(\a,0) node (B) {$B$}
(0,-\b) node[align=center] (C) {$C$};
\begin{scope}[nodes={midway,scale=.75}]
\draw[<-] (A)--(C.120) node[left]{some text};
\draw[->] (C.60)--(B) node[right]{some text};
\end{scope}
\end{tikzpicture}
\]
生成下图:
我的问题:
(1)如何将箭头上的文字“some text”沿箭头方向移动,而不是像现在这样水平移动?也就是说,我想将“some text”文字横向或平行于箭头方向移动。
(2)如何增加箭头尺寸?
答案1
像这样:
通过使用 Ti钾Z库及图片元素样式定义:
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
positioning,
quotes}
\begin{document}
\begin{tikzpicture}[
node distance = 15mm and 20mm,
every edge/.style = {draw, -Straight Barb},
every edge quotes/.style = {auto=right, font=\footnotesize, inner sep=2pt, sloped}
]
\node (A) {$A$};
\node (C) [below right=of A] {$C$};
\node (B) [above right=of C] {$B$};
%
\draw (C) edge ["some text"] (A)
(C) edge ["some text"] (B);
\end{tikzpicture}
\end{document}
答案2
这个答案分为两部分:
- 一个办法
- 编写更好问题的一些提示
解决方案:
- 使用 tikz 库
arrows.meta
- 避免范围和缩放,因为不同的字体大小似乎是您想要的标签
\def
我不太清楚是否需要 TeX ;我建议\pic
改用- 对于标签,节点被放置在下一个节点坐标之后,例如
(A)
......这可能不是你想要的 - 为了使代码更清晰,重构总是一个好主意,一开始就将其重构为一些样式定义(
lbl
等等)
\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{arrows.meta}% <<< new
\begin{document}
\begin{tikzpicture}[% <<< new
lbl/.style={sloped,below,% <<< as requested
font={\scriptsize}},% <<< fontsize, instead of scaling
>=Stealth% <<< arrow tip from arrows.meta
]
\def\a{1.5} \def\b{2}% <<< shouldn't be used here; what's the need?
\path
(-\a, 0) node (A) {$A$}
( \a, 0) node (B) {$B$}
( 0,-\b) node (C) {$C$};
% ~~~ not needed, not really what you intend ~~~~~~~~~~~
% (0,-\b) node[align=center] (C) {$C$};% <<< only useful for\\multi-\\line
% \begin{scope}[nodes={midway,scale=.75}]% <<< not needed
% \draw[<-] (A)--(C.120) node[left]{some text};
% \draw[->] (C.60)--(B) node[right]{some text};
% ~~~ alternative ~~~~~~~~~~~~~~~~~~
\draw[->] (C.120)-- node[left ,lbl]{some text} (A);
\draw[->] (C.60) -- node[right,lbl]{some text} (B);
% \end{scope}% <<< not needed, related to labels font size
\end{tikzpicture}
\end{document}
编写更好问题的提示
为了帮助您学习,无论是关于 Latex 还是本网站,下面的图片都是您在复制代码片段时从常规 Latex 系统编译中得到的结果。结果发现,它是不完整的……(而且无论如何都是错误的)
因此,此答案显示了将精简的代码片段(这很好)转换为 MWE 的过程,人们可以立即复制、尝试和改进。即发布此处显示的最后一个代码是一个不错的 MWE。
顺便说一下,这是一个关于如何编写 MWE 的很好的汇编,在答案和许多评论中的链接中都有。
0. 来自评论
看起来这里使用的 Latex 环境TexStudio
可以减少代码编写量。这可能是由于此工具的自动完成功能,请参阅维基百科还有一些.clw 文件。
但是,运行 Latex 的方法有很多,包括命令行、通过 IDE、通过在线、使用 Docker 以及 whatHaveYou。因此,为了让这里的观众能够立即复制、编译和处理您的代码以获得答案,basic structure
应该始终提供以下内容in code you post
:
\documentclass ...% insert yours
% ~~~ preamble ~~~
\usepackage ... % insert yours, the RELEVANT ones only
...
\begin{document}
% your relevant code here
\end{document}
1. 编译错误
好的,这似乎在您的环境中有效,但是......
\[\begin{tikzpicture}
\def\a{1.5} \def\b{2}
\path
(-\a,0) node (A) {$A$}
(\a,0) node (B) {$B$}
(0,-\b) node[align=center] (C) {$C$};
\begin{scope}[nodes={midway,scale=.75}]
\draw[<-] (A)--(C.120) node[left]{some text};
\draw[->] (C.60)--(B) node[right]{some text};
\end{scope}
\end{tikzpicture}
\]
... 对于这里的大多数用户来说,它无法在常规 Latex 系统上进行编译,常规 Latex 系统pdflatex
在这里(通过 F1 不可见):
2. 让我们添加文档环境
\begin{document}
\[\begin{tikzpicture}
\def\a{1.5} \def\b{2}
\path
(-\a,0) node (A) {$A$}
(\a,0) node (B) {$B$}
(0,-\b) node[align=center] (C) {$C$};
\begin{scope}[nodes={midway,scale=.75}]
\draw[<-] (A)--(C.120) node[left]{some text};
\draw[->] (C.60)--(B) node[right]{some text};
\end{scope}
\end{tikzpicture}
\]
\end{document}
仍然抱怨:不知道 atikzpicture
应该是什么:
3. 启用编译 Tikz 文档
因此,您需要指定一个文档类,并使用 tikz 包。这个
\documentclass[10pt,border=3mm,tikz]{standalone}
等同于
\documentclass[10pt,border=3mm]{standalone}
\usepackage{tikz}
\documentclass[10pt,border=3mm,tikz]{standalone}
\begin{document}
\[\begin{tikzpicture}
\def\a{1.5} \def\b{2}
\path
(-\a,0) node (A) {$A$}
(\a,0) node (B) {$B$}
(0,-\b) node[align=center] (C) {$C$};
\begin{scope}[nodes={midway,scale=.75}]
\draw[<-] (A)--(C.120) node[left]{some text};
\draw[->] (C.60)--(B) node[right]{some text};
\end{scope}
\end{tikzpicture}
\]
\end{document}
但它仍然抱怨,这次是关于你想要的数学模式:
4. 让我们删除数学模式
\documentclass[10pt,border=3mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\def\a{1.5} \def\b{2}
\path
(-\a,0) node (A) {$A$}
(\a,0) node (B) {$B$}
(0,-\b) node[align=center] (C) {$C$};
\begin{scope}[nodes={midway,scale=.75}]
\draw[<-] (A)--(C.120) node[left]{some text};
\draw[->] (C.60)--(B) node[right]{some text};
\end{scope}
\end{tikzpicture}
\end{document}
耶!第一次编译成功。现在我们才可以转向tikz
代码本身并重新编写它...
5. 希望你能收到
这是一种返工,通常只能纯粹猜测海报序言,这种不完整的代码片段给这个社区带来了压力。
猜猜看,它会产生什么影响
- 回复数量
- 回复质量
- 回复速度
请学习做得更好。
答案3
您可以使用以下方法快速解决您的问题tikz-cd
:
\documentclass{article}
\usepackage{amsmath,amssymb,tikz-cd}
\usetikzlibrary{arrows.meta}
\tikzcdset{
arrow style=tikz,
arrows={>={To[width=.4cm, length=.15cm]}}
}
\begin{document}
Text is parallel to the arrow:
\[
\begin{tikzcd}
A&&B\\[24pt]
&C\ar[ul, sloped, swap, "\text{some text}"]\ar[ur, sloped, swap, "\text{some text}"]
\end{tikzcd}
\]
Text crosses the arrow:
\[
\begin{tikzcd}
A&&B\\[24pt]
&C\ar[ul, "\text{some text}" description]\ar[ur, "\text{some text}" description]
\end{tikzcd}
\]
\end{document}
我在箭头设置中使用了“To”:
arrow style=tikz,
arrows={>={To[width=.4cm, length=.15cm]}}
但您可以使用 TikZ 提供的任何样式,并可以设置您喜欢的宽度和长度。