检查号码是否在列表中

检查号码是否在列表中

我的目标是根据数字列表拥有不同的标题和排序。

我有多个按项目编号(降序)排序的项目。现在我想突出显示一些项目,以便突出显示的项目排在前面,然后是其他项目。突出显示的项目仍然按编号排序,其他项目也是如此。

如果我只突出显示项目或没有人突出显示,则标题应为“项目”。如果我有一个或多个突出显示的项目,则标题应为“突出显示的项目”,而对于未突出显示的项目,标题应为“其他项目”。

我的项目代码没有任何突出显示,如下所示:

\xdef\myHighlights{ 01,03 }   
\let\mylist\empty
    \foreach\x in {00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, ...,20} {
      \ifx\mylist\empty 
        \xdef\mylist{\x}%
      \else
        \xdef\mylist{\x,\mylist}%
      \fi
    }

\foreach\x in \mylist {%
      \edef\projectNumber{\x}%
      \edef\FileName{path/to/project_\x}%     
      \IfFileExists{\FileName}{% 
           \newpage%
           \input{\FileName}%
      }     
 }

我必须将 \mylist 拆分为 \normalProjectList 和 \highlightedProjectList。但我不知道如何比较 \mylist 中的 \x 是否在 \myHighlights 中。

答案1

这里我使用listofitems搜索列表\myList中的每个元素\myHighlights,并据此构建两个请求的(高亮和普通)列表。

\documentclass{article}
\usepackage{listofitems}
\def\myHighlights{01,03}   
\def\myList{00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15,
  16, 17, 18, 19, 20}
\begin{document}
\newcommand\normalProjectList{}
\newcommand\highlightedProjectList{}
\readlist*\tlist{\myList}
\foreachitem\z\in\tlist[]{%
  \expandafter\setsepchar\expandafter{\z}%
  \readlist*\hlist{\myHighlights}
  \ifnum\listlen\hlist[]>1\relax
    \xdef\highlightedProjectList{\highlightedProjectList \z, }%
  \else
    \xdef\normalProjectList{\normalProjectList \z, }%
  \fi
}
Highlighted Projects:

\highlightedProjectList

Normal Projects:

\normalProjectList
\end{document}

在此处输入图片描述

答案2

我已经为这项工作设置了一个界面。

主命令是\loadprojects将第一个项目编号和最后一个项目编号作为参数(缺少的数字不会成为问题)。

\highlightprojects说明要突出显示哪些(在这里您可以指定精确的终止)。

如果您这样做\loadprojects*,那么所有项目都将被视为突出显示并被\sethighlights忽略。

您可以使用可选参数(默认值为 2)指定数字的格式;因此

\loadprojects[3]{0}{3}

将尝试加载编号为 000、001、002 和 003 的项目。

在下面的例子中,我\loadprojects使用了不同的设置\sethighlights。首先突出显示其中几个,然后不突出显示,然后全部突出显示。

可用的文件有ramona00.tex、、、和(缺少编号 04 ramona01.tex)。ramona02.texramona03.texramona05.tex

\documentclass{article}
\usepackage[a6paper]{geometry} % to make smaller pictures
\usepackage{fancyhdr}

\fancyhf{}
\fancyhead[R]{\projecttype}
\fancyfoot[C]{\thepage}
\pagestyle{fancy}

\ExplSyntaxOn

\NewDocumentCommand{\sethighlights}{m}
 {
  \seq_gset_from_clist:Nn \g_ramona_project_highlights_seq { #1 }
 }

\NewDocumentCommand{\setprojectroot}{m}
 {
  \tl_gset:Nn \g_ramona_project_root_tl { #1 }
 }

\NewDocumentCommand{\loadprojects}{sO{2}mm}
 {% #1 = * for all highlighted,
  % #2 = number of digits,
  % #3 = start point,
  % #4 = end point
  \ramona_project_load:nnnn { #1 } { #2 } { #3 } { #4 }
 }

\NewDocumentCommand{\projecttype}{}
 {
  \tl_use:N \l_ramona_project_header_tl
 }

\bool_new:N \g_ramona_project_all_highlighted_bool
\tl_new:N \g_ramona_project_root_tl
\tl_new:N \l_ramona_project_header_tl
\seq_new:N \g_ramona_project_highlights_seq

\cs_new_protected:Nn \ramona_project_load:nnnn
 {
  % if all projects are highlighted or none is, set the conditional to true
  \bool_lazy_or:nnT
   { \bool_if_p:n { #1 } } % all highlighted
   { \seq_if_empty_p:N \g_ramona_project_highlights_seq } % none highlighted
   {
    \bool_gset_true:N \g_ramona_project_all_highlighted_bool
   }
  % now input the files
  \int_step_inline:nnn { #3 } { #4 }
   {
    \clearpage
    \bool_if:NTF \g_ramona_project_all_highlighted_bool
     {% all or no projects are highlighted
      \tl_set:Nn \l_ramona_project_header_tl { Projects }
     }
     {% check whether the current project is highlighted
      \seq_if_in:NxTF \g_ramona_project_highlights_seq
       { \__ramona_projects_pad:nn { #2 } { ##1 } } % the current item
       {% the project is highlighted
        \tl_set:Nn \l_ramona_project_header_tl { Highlighted~Projects }
       }
       {% the project is not highlighted
        \tl_set:Nn \l_ramona_project_header_tl { Other~Projects }
       }
     }
    \file_if_exist_input:n { \g_ramona_project_root_tl \__ramona_projects_pad:nn { #2 } { ##1 } }
   }
 }

\cs_new:Nn \__ramona_projects_pad:nn
 {
  \prg_replicate:nn { #1 - \tl_count:n { #2 } } { 0 } #2
 }

\ExplSyntaxOff

\setprojectroot{./ramona}

\begin{document}

\thispagestyle{empty}
\begin{center}
Only some are highlighted
\end{center}

\sethighlights{00,02}
\loadprojects{0}{5}

\clearpage

\thispagestyle{empty}
\begin{center}
None highlighted
\end{center}

\sethighlights{}
\loadprojects{0}{5}

\clearpage

\thispagestyle{empty}
\begin{center}
All are highlighted
\end{center}

\loadprojects*{0}{5}

\end{document}

有些突出显示

在此处输入图片描述

未突出显示

在此处输入图片描述

全部突出显示

在此处输入图片描述

相关内容