использовать счетчики tex в коде tikz

использовать счетчики tex в коде tikz

Пытаясь написать несколько команд для упрощения создания временных линий с помощью 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, я, к сожалению, не могу исправить это самостоятельно (а интернет-исследование не дало никаких полезных результатов).

Может ли кто-нибудь помочь мне добавить счетчики текс в tikz?

решение1

Имеет \n{<number register>}синтаксис

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

Следовательно, так и должно быть \n{length} = {\the\StartTime-\the\EndTime}(фигурные скобки, а не круглые).

Однако \n{length} = {\the\StartTime-\the\EndTime}возникнут ошибки «Слишком большой размер», поскольку \StartTimeи \EndTimeявляются целыми числами, слишком большими для хранения размеров (в pt).

Обходной путь:

Вычислить разницу между \StartTimeи \EndTimeдо pgfmathразбора математического выражения. Это может быть сделано либо до \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}

Связанный контент