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