gpt4 book ai didi

list - 仅从 LaTeX 的列表中选择一些项目

转载 作者:行者123 更新时间:2023-12-04 08:30:26 26 4
gpt4 key购买 nike

我有一个 LaTeX 文档,它基本上是一个大文件 enumerate环境,有几百个项目。我希望能够发出类似的命令

\printitems{2,5,12,45-48}

这将只输出请求的项目。

类似的命令 \onlyslidesslides.cls 的一部分,但我无法弄清楚那里发生了什么并使其适应我的需求。

我可以替换 item的列表带有环境列表,例如
\begin{myitem}
...
\end{myitem}

\begin{myitem}
...
\end{myitem}

\newcounter等等,如果它有助于实现我的目的 - 能够仅打印具有给定编号的某些项目而无需剪切和粘贴。我可以将项目放在一个文件中,而 \printitems如果需要,在另一个命令中。

我不能把数字放在文件里——文件在不断变化,我需要自动枚举。

最佳答案

好的,那么,我们开始吧。

如下所示,编码的主要部分是解析逗号分隔的范围输入。之后,很容易检查您在 enumerate 环境(或其他)中达到的数字并有条件地显示该项目。

您可以从这里复制并粘贴到一个空的 .tex 中。文档,它应该可以正常工作:

%% 首先,我使用 expl3 包来完成大部分编码。让一些事情变得更容易。

\documentclass{article}\usepackage{expl3}\ExplSyntaxOn

%% Here's the function to loop over comma-list range input like -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:}

%% And the auxiliary function to return whether the input argument is contained within the range:

\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{enum}+1}{\l_item_range_tl}{
\项目#1
}{
\stepcounter{枚举}
}
}

%% 以及带有 range 参数的 enumerate 环境:

\newenvironment{某些项目}[1]{
\tl_set:Nn\l_item_range_tl {#1}
\begin{枚举}
}{
\end{枚举}
}
\ExplSyntaxOff

%% 最后,举个例子:

\begin{文档}
\begin{someitems}{-2,4-6,8,10-}
\numitem{一}\numitem{二}\numitem{三}
\numitem{四}\numitem{五}\numitem{六}
\numitem{七}\numitem{八}\numitem{九}
\numitem{十}\numitem{十一}
\end{某些项目}
\end{文档}

关于list - 仅从 LaTeX 的列表中选择一些项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com