排列循环符号

排列循环符号

如何通过循环符号很好地表示排列?即循环

\[1 \mapsto 2 \mapsto 3 \mapsto 1\]

可以通过以下方式完成:

\[ (1\quad2\quad3) \]

使用\quad,但这似乎有点太多了。

我能做得更好吗?

编辑:不知道\;——效果很好。

答案1

这是一个\;默认使用的命令,但您可以根据需要选择其他分隔符;例如,当集合“较小”时,我经常不使用分隔符(最多 9,您可以在第二个示例中看到它):

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\cycle}{ O{\;} m }
 {
  (
  \alec_cycle:nn { #1 } { #2 }
  )
 }

\seq_new:N \l_alec_cycle_seq
\cs_new_protected:Npn \alec_cycle:nn #1 #2
 {
  \seq_set_split:Nnn \l_alec_cycle_seq { , } { #2 }
  \seq_use:Nn \l_alec_cycle_seq { #1 }
 }
\ExplSyntaxOff

\begin{document}
$\cycle{1,2,3}$

$\cycle[]{1,2,3}$

$\cycle[\quad]{1,2,3}$

$\cycle[,]{1,2,3}$

$\cycle[;]{1,2,3}$
\end{document}

在此处输入图片描述

不要$$在 LaTeX 中使用,请参阅为什么 \[ ... \] 比 $$ ... $$ 更可取?

答案2

对于解析器来说很简单listofitems

\documentclass{article}
\usepackage{listofitems}
\newcommand\cycle[2][\,]{%
  \readlist\thecycle{#2}%
  (\foreachitem\i\in\thecycle{\ifnum\icnt=1\else#1\fi\i})%
}
\begin{document}
$\cycle{1,2,3}$

$\cycle[]{1,2,3}$

$\cycle[\quad]{1,2,3}$

$\cycle[,]{1,2,3}$

$\cycle[;]{1,2,3}$
\end{document}

在此处输入图片描述

答案3

旧帖子,但这个问题一直困扰着我,所以我把一些我不完全理解的东西拼凑在一起。特别是,我不明白为什么需要两个花括号(“{{”)来打开和关闭定义——我猜这与嵌套定义有关。我受到了 egreg 的回答的启发,但我不明白 expl3 (?) 的东西,而且无论如何它似乎太复杂了。幸运的是,egreg 自己有一个替代方案答案。仅供参考,我缩​​短了函数名称,并且在输入源时我更喜欢使用空格而不是逗号( \cyc{1 2 3} 而不是 \cyc{1,2,3} )。

\documentclass[a4paper]{article}
\usepackage{xparse}
\begin{document}

\newif\iffirstitem
\firstitemtrue

% \cyc[optional joiner]{space separated list}
% write list in permutation cycle notation with joiner between
% elements, defaulting to \;
\NewDocumentCommand \cyc { O{\;} >{\SplitList{ }} m }
    {{%
        \NewDocumentCommand{\processfoo}{ m }
            {
                \iffirstitem
                    \firstitemfalse
                \else
                    #1
                \fi
                ##1
            }
        (\ProcessList{#2}{\processfoo})
        \firstitemtrue
    }}

$\cyc[]{1 2 3}$

$\cyc[\,]{1 2 3}$

$\cyc{1 2 3}$

$\cyc[\quad]{1 2 3}$

$\cyc[,]{1 2 3}$

$\cyc[;]{1 2 3}$

\end{document}

相关内容