在 tikz 代码中使用 tex 计数器

在 tikz 代码中使用 tex 计数器

在尝试编写一些命令来简化使用 tikz 生成时间线时,我偶然发现了这个错误:

梅威瑟:

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{pgfcalendar}


\begin{document}

\newcount\StartTime
\newcount\EndTime
\begin{tikzpicture}
    \pgfcalendardatetojulian{2021-01-01}{\StartTime}
    \pgfcalendardatetojulian{2022-01-01}{\EndTime}
    \typeout{\the\StartTime}
    \draw let
        \n{length} = (\the\StartTime-\the\EndTime),
    in
        (0,0) -- (\n{length},0);
\end{tikzpicture}

\end{document}

执行此输出时得到:

2459216
/media/daten/coding/01_manuals/tex/testing/chrono/mwe.tex:17: Use of \tikz@cc@stop@let doesn't match its definition.
<recently read> \the

l.17            \n{length} = (\the
                       \StartTime-\the\EndTime),

我发现我在获取计数器的值时遇到了一些麻烦。由于我是 LaTeX 扩展方面的新手,因此很遗憾我无法自己解决这个问题(而且互联网研究也没有找到有用的结果)。

有人可以帮我将 tex 计数器带入 tikz 吗?

答案1

has\n{<number register>}语法

\n{<number register>} = {<pgfmath expression>}

因此它应该是\n{length} = {\the\StartTime-\the\EndTime}(花括号,而不是圆括号)。

但是,\n{length} = {\the\StartTime-\the\EndTime}将引发“维度太大”错误,因为\StartTime\EndTime都是整数,对于维度来说太大而无法容纳(以 为单位pt)。

解决方法:

在解析数学表达式之前计算\StartTime和之间的差值。这可以在解析之前进行(借助另一个计数),也可以以可扩展的方式就地进行。\EndTimepgfmath\draw

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{pgfcalendar}

\begin{document}

\newcount\StartTime
\newcount\EndTime
\begin{tikzpicture}
    \pgfcalendardatetojulian{2021-01-01}{\StartTime}
    \pgfcalendardatetojulian{2022-01-01}{\EndTime}
    \typeout{\the\StartTime}
    \draw let
        \n{length} = {\the\numexpr\StartTime-\EndTime pt},
    in
        % \n{length} is -365pt
        (0,0) -- (\n{length},0);
\end{tikzpicture}

\end{document}

相关内容