Хорошо, тогда поехали.
Как вы можете видеть ниже, основная часть кодирования - это анализ входных данных через запятую.После этого легко проверить, какой номер вы используете в перечисляющей среде (или чего-либо еще) и условно отобразить элемент.
С этого момента вы можете скопировать и вставить его в пустой документ .tex
ион должен просто работать:
%% Прежде всего, я использую пакет expl3 для выполнения большей части этого кодирования.Упрощает некоторые вещи.
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
%% Вот функция для циклического ввода значений в диапазоне запятых, например -2,4-6,8,10-
:
\prg_new_conditional:Nnn \i_in_range:nn {TF,T,F} {
\bool_set_false:N \l_tmpa_bool
\clist_map_inline:nn {#2} {
\parse_range:w ##1 - \q_marker - \q_nil #1 \q_nil
}
\bool_if:NTF \l_tmpa_bool \prg_return_true: \prg_return_false:
}
%%.входной аргумент содержится в диапазоне:
\cs_set:Npn \parse_range:w #1 - #2 - #3 \q_nil #4 \q_nil {
\tl_if_eq:nnTF {\q_marker}{#2}{
\intexpr_compare:nT {#4=#1} {\bool_set_true:N \l_tmpa_bool}
}{
\tl_if_empty:nTF {#2}{
\intexpr_compare:nT {#4>=#1} {\bool_set_true:N \l_tmpa_bool}
}{
\tl_if_empty:nTF {#1}{
\intexpr_compare:nT {#4<=#2} {\bool_set_true:N \l_tmpa_bool}
}{
\intexpr_compare:nT {#4>=#1} {
\intexpr_compare:nT {#4<=#2}
{\bool_set_true:N \l_tmpa_bool}
}
}
}
}
}
\cs_generate_variant:Nn \i_in_range:nnTF {nV}
%% Это команда для ввода каждого элемента вашего списка:
\newcommand\numitem[1]{
\i_in_range:nVTF {\value{enumi}+1}{\l_item_range_tl}{
\item #1
}{
\stepcounter{enumi}
}
}
%% И перечисляемая среда с диапазономаргумент:
\newenvironment{someitems}[1]{
\tl_set:Nn \l_item_range_tl {#1}
\begin{enumerate}
}{
\end{enumerate}
}
\ExplSyntaxOff
%% Наконец, пример:
\begin{document}
\begin{someitems}{-2,4-6,8,10-}
\numitem{one}\numitem{two}\numitem{three}
\numitem{four}\numitem{five}\numitem{six}
\numitem{seven}\numitem{eight}\numitem{nine}
\numitem{ten}\numitem{eleven}
\end{someitems}
\end{document}