tikz 坐标的扩展

tikz 坐标的扩展

我尝试用 和 画一条线TikZ,但失败了,如 的代码所示version 1。我认为这是因为结束坐标的表达式\pgfmathresult\textwidth没有展开。所以我尝试了version 2和的代码version 3,尝试先展开\pgfmathresult\textwidth。但两者都不起作用。为什么?

虽然的代码version 4按预期排版了该行,但我不想引入辅助宏(这里是\x)。

那么,如何在TikZ其自身的范围内扩展坐标表达式呢?

梅威瑟:

\documentclass{article}
\usepackage{geometry,tikz}
\geometry{showframe}


\parindent0pt
\begin{document}
\pgfmathparse{0.1+0.2}\pgfmathresult

% Version 0:
V0: |\tikz\draw(0,0)--(\textwidth * \value{page} / 3,0);|

% Version 1: fail
V1: |\tikz\draw(0,0)--(\pgfmathresult\textwidth,0);|

% version 2: fail
V2: |\tikz\draw(0,0)--(\expanded{\pgfmathresult\textwidth},0);|

% version 3: fail
V3: |\tikz\draw(0,0)--(\the\dimexpr\textwidth * \pgfmathresult\relax,0);|

% version 4: works, but I don't want to introduce an new auxilary macro.
V4: |\edef\x{\noexpand\tikz\noexpand\draw(0,0)--(\pgfmathresult\textwidth,0);}\x|

\end{document}

答案1

描述

我建议两种更简单的方法:

  • V5版:使用变量保存结果并在稍后使用(\let\mylinefactor\pgfmathresult)。这也允许您使用 after 计算多个事物\pgfmathparse
  • V6版:如果只需要一次变量,则可以将计算放入 tikz 表达式中(如果添加)\usetikzlibrary{calc}

代码

\documentclass{article}
\usepackage{geometry,tikz}
\geometry{showframe}

\usetikzlibrary{calc}

\parindent0pt
\begin{document}
\pgfmathparse{0.1+0.2}\pgfmathresult
\let\mylinefactor\pgfmathresult % save the result

\pgfmathparse{0.2+0.3}\pgfmathresult % so you could make other calculations afterwards

% Version 0:
V0: |\tikz\draw(0,0)--(\textwidth * \value{page} / 3,0);|

% Version 5: works
V5: |\tikz\draw(0,0)--(\mylinefactor\textwidth,0);|

% Version 6: works
V6: |\tikz\draw(0,0)--({(0.1+0.2)*\textwidth},0);|

\end{document}

结果

在此处输入图片描述

答案2

tikz没有: 的行

\documentclass{article}
\usepackage{showframe}
\usepackage{xfp}
\parindent0pt
\def\factor{\fpeval{0.1+0.2}}
\begin{document}
V7: |\rule{\dimexpr \textwidth * \value{page} / 3}{0.5pt}|

V8: |\rule{\dimexpr \factor\textwidth}{0.5pt}|
\end{document}

在此处输入图片描述

相关内容