I extended egregs answer by defining a macro, that creates and initializes an fp value in 1 line. Then put the variables into a sequence and printed the sequence:
\documentclass{article}
\usepackage{xparse}
\usepackage{expl3}
\setlength{\parindent}{0cm}
\begin{document}
\ExplSyntaxOn
\NewDocumentCommand{\newfpvar}{m}{\fp_new:N #1}
\NewDocumentCommand{\setfpvar}{mm}{\fp_set:Nn #1 { #2 }}
\NewDocumentCommand{\getfpvar}{m}{\fp_use:N #1}
%my new macro
\NewDocumentCommand{\define_fp_var}{mm}{
\newfpvar{#1}
\setfpvar{#1}{#2}
}
%define 3 variables
\define_fp_var{\One}{1}
\define_fp_var{\Two}{2}
\define_fp_var{\Three}{3}
%put them into sequence
\seq_new:N \fp_seq
\seq_put_right:Nn \fp_seq {\One}
\seq_put_right:Nn \fp_seq {\Two}
\seq_put_right:Nn \fp_seq {\Three}
%print sequence
\seq_map_inline:Nn \fp_seq
{
\getfpvar{#1}\\
}
\ExplSyntaxOff
\end{document}
Prints:
I tried to create a macro, when I can define a value and push it into a sequence in 1 line, but it doesn't work:
\documentclass{article}
\usepackage{xparse}
\usepackage{expl3}
\setlength{\parindent}{0cm}
\begin{document}
\ExplSyntaxOn
\NewDocumentCommand{\newfpvar}{m}{\fp_new:N #1}
\NewDocumentCommand{\setfpvar}{mm}{\fp_set:Nn #1 { #2 }}
\NewDocumentCommand{\getfpvar}{m}{\fp_use:N #1}
%my new macro
\NewDocumentCommand{\define_fp_var}{mm}{
\newfpvar{#1}
\setfpvar{#1}{#2}
}
%this doesn't work
%#1 - sequence name
%#2 - value
\NewDocumentCommand{\seq_put_fp_var_right}{mm}{
\group_begin:
%variable redefined
\define_fp_var{\temp}{#2}
\seq_put_right:Nx #1 \temp
\group_end:
}
\seq_new:N \fp_seq
\seq_put_fp_var_right \fp_seq {1}
\seq_put_fp_var_right \fp_seq {2}
\seq_put_fp_var_right \fp_seq {3}
\seq_map_inline:Nn \fp_seq
{
\getfpvar{#1}\\
}
\ExplSyntaxOff
\end{document}
Prints an error:
Control sequence \temp already defined.
l.28 \seq_put_fp_var_right \fp_seq {2}
How can I define a variable locally and store it in a sequence?
I read this: LaTeX3: how to define a variable locally, but still don't understand, how to do the task.