我尝试用 和 画一条线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}