例如,我想使用 ProbXpos 来定位刻度标记和线端。它似乎按我的意图进行计算,但我该如何使用计算出的值?下面的示例打印了一个示例结果值。如果我取消注释注释行,它甚至不会编译。
另外——小问题——有些功能有用吗ln 10
?对我来说不起作用。
\documentclass{article} %maybe a better one?
\usepackage{tikz}
\newcommand{\ProbXpos}[1]{\pgfmathparse{ln(#1/(1-#1))/ln 10}\pgfmathresult }
\begin{document}
\begin{tikzpicture}
\draw (0,1) node {\ProbXpos{0.1} result prints ok} ;
% \draw (\ProbXpos{.0001},0) -- (\ProbXpos{0.999},0)
% node {cannot use result numerically} ;
\end{tikzpicture}
\end{document}
答案1
ProbXpos
也许您对制作一个可以在坐标内使用的函数感兴趣。
ProbXpos(…)
由于括号本身包含括号,因此需要额外的一对括号。
您还可以使用如下定义
\newcommand{\ProbXpos}[1]{{log10(#1/(1-#1))}}
也可以在坐标内部使用。
但无法修改,即(2*\ProbXpos{…}, 0)
,因为它已经包含括号。
再次,我们可以省略多余的一对括号,但我们需要{ }
在坐标中使用。
代碼(declare function
变体)
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[declare function={ProbXpos(\x)=log10(\x/(1-\x));}]% could be global …
\draw (0,1) node {\pgfmathparse{ProbXpos(0.1)}\pgfmathresult\ result prints ok} ;
\draw ({ProbXpos(.0001)},0) -- ({ProbXpos(0.9999)},0);
\end{tikzpicture}
\end{document}
代码(PGF 数学函数)
\documentclass[tikz]{standalone}
\makeatletter
\pgfmathdeclarefunction{ProbXpos}{1}{%
\begingroup
\pgfmathparse{log10(#1/(1-#1))}%
\pgf@x=\pgfmathresult pt\relax
\pgfmathreturn\pgf@x
\endgroup
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0,1) node {\pgfmathparse{ProbXpos(0.1)}\pgfmathresult\ result prints ok} ;
\draw ({ProbXpos(.0001)},0) -- ({ProbXpos(0.9999)},0);
\end{tikzpicture}
\end{document}
输出(declare function
/PGF 数学函数)
代码(LaTeX 宏)
\documentclass[tikz]{standalone}
\newcommand{\ProbXpos}[1]{log10(#1/(1-#1))}
\begin{document}
\begin{tikzpicture}
\draw (0,1) node {\ProbXpos{0.1} result prints ok} ;
\draw ({\ProbXpos{.0001}},0) -- ({\ProbXpos{0.999}},0);
\end{tikzpicture}
\end{document}
输出(LaTeX 宏)
答案2
可能存在更多的 tikz 方式,但它可以将分配移出路径语法。
\documentclass{article} %maybe a better one?
\usepackage{tikz}
\newcommand{\ProbXpos}[2]{\pgfmathparse{ln(#2/(1-#2))/ln 10}\let#1\pgfmathresult }
\begin{document}
\begin{tikzpicture}
\ProbXpos\tmpa{.0001}
\ProbXpos\tmpb{0.999}
\draw (0,1) node {\ProbXpos\tmp{0.1}\tmp result prints ok} ;
\draw (\tmpa,0) -- (\tmpb,0)
node {cannot use result numerically} ;
\end{tikzpicture}
\end{document}
答案3
Qrrbrbirlbel 解决方案的变体\pgfmath@smuggleone\pgfmathresult
:
\documentclass{scrartcl}
\usepackage{tikz}
\makeatletter
\pgfmathdeclarefunction{ProbXpos}{1}{%
\begingroup
\pgfmathparse{ln(#1/(1-#1))/ln 10}%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}%
\makeatother
\begin{document}
\pgfmathparse{ProbXpos(0.999)}\pgfmathresult
\begin{tikzpicture}
\draw (ProbXpos{.0001},0) -- (ProbXpos{0.9999},0) ;
%or
\draw ({ProbXpos(.0001)},-1) -- ({ProbXpos(0.9999)},-1);
\end{tikzpicture}
\end{document}