Ti의 "not in the set" 명령이 무엇인지 아는 사람이 있습니까?케이지? 내가 원하는 것은ㅏ세트가 되고비~의 부분집합이 되다ㅏ. Ti의 명령은 무엇입니까?케이Z는 다음과 같이 말합니다. “각각나~에ㅏ하지만 안에는 없어비?
나는 다음과 같은 것이 필요합니다 :
foreach i in A
if i is in the set B do THIS, else do THAT
답변1
무차별 접근 방식.
\documentclass{article}
\usepackage{tikz}
\def\setA{1,2,3,4,5}
\def\setB{2,4}
\newif\ifmatch
\begin{document}
\let\setC=\empty
\foreach \x in \setA {\matchfalse
\foreach \y in \setB {\ifnum\x=\y\relax \global\matchtrue \fi}%
\ifmatch\else
\ifx\empty\setC\relax
\xdef\setC{\x}%
\else
\xdef\setC{\setC,\x}%
\fi
\fi}
\setC% should contain 1,3,5
\end{document}
답변2
(순서가 지정된) 집합을 쉼표로 구분된 목록으로 나타낼 수 있습니다.
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\foreachnot}{mm+m+m}
{% #1 = main list, #2 = exclusion list,
% #3 = to do if item is in main list but not in the exclusion list
% #4 = to do if item is in the main list and in the exclusion list
\erdos_forachnot:nnnn { #1 } { #2 } { #3 } { #4 }
}
\NewDocumentCommand{\definelist}{mm}
{
\clist_clear_new:c { l__erdos_list_#1_clist }
\clist_set:cn { l__erdos_list_#1_clist } { #2 }
}
\cs_new_protected:Nn \erdos_forachnot:nnnn
{
\cs_set_protected:Nn \__erdos_foreachnot_true:n { #3 }
\cs_set_protected:Nn \__erdos_foreachnot_false:n { #4 }
\clist_map_inline:cn { l__erdos_list_#1_clist }
{
\clist_if_in:cnTF { l__erdos_list_#2_clist } { ##1 }
{% item is in main list and in the exclusion list
\__erdos_foreachnot_false:n { ##1 }
}
{% item is in main list but not in the exclusion list
\__erdos_foreachnot_true:n { ##1 }
}
}
}
% initialize the two scratch functions
\cs_new_protected:Nn \__erdos_foreachnot_true:n {}
\cs_new_protected:Nn \__erdos_foreachnot_false:n {}
\ExplSyntaxOff
\begin{document}
\definelist{A}{1,2,3,4,5}
\definelist{B}{2,4}
\foreachnot{A}{B}{Item #1 is in A but not in B\par}{Item #1 is in A and in B\par}
\end{document}
세 번째와 네 번째 인수는 현재 항목이 으로 표시되는 템플릿입니다 #1
.
이러한 루프를 중첩해야 하는 경우 더 많은 작업이 필요합니다.