如何更快地输入带有逗号的排列?

如何更快地输入带有逗号的排列?

是否可以使用包或其他东西来加快输入排列的速度?我现在必须输入$(a,b,c,d)$最佳情况,但我想做类似的事情\Pm{a b c d}。我可以这样做吗?

答案1

它似乎并不比(a,b,c)更容易输入,但是

\documentclass{article}

\def\pm#1{$(\xpm{}#1 ! )$}
\def\xpm#1#2 {\ifx!#2\else#1#2\expandafter\xpm\expandafter,\fi}

\begin{document}

\pm{a b c}

\end{document}

或者不带空格分隔符:

\documentclass{article}

\def\pm#1{$(\xpm{}#1 ! )$}
\def\xpm#1#2{\ifx!#2\else#1#2\expandafter\xpm\expandafter,\fi}

\begin{document}

\pm{abc}

\pm{a{bc}de}

\end{document}

答案2

您可以使用我的答案的变体来排列循环符号

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\Pm}{ O{~} m O{,} }
 {
  (
  \jeroen_cycle:nnn { #1 } { #2 } { #3 }
  )
 }

\seq_new:N \l_jeroen_cycle_seq
\cs_new_protected:Npn \jeroen_cycle:nnn #1 #2 #3
 {
  \seq_set_split:Nnn \l_jeroen_cycle_seq { #1 } { #2 }
  \seq_use:Nn \l_jeroen_cycle_seq { #3 }
 }
\ExplSyntaxOff

\begin{document}
$\Pm{1 2 3}$

$\Pm[,]{1,2,3}[\;]$

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

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

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

前导可选参数是输入分隔符(默认为空格),尾随的参数是输出分隔符(默认为逗号)。

在此处输入图片描述

或者,你可以设置一个键值接口:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\keys_define:nn { jeroen/perms }
 {
  input-separator .tl_set:N   = \l_jeroen_perms_input_separator_tl,
  input-separator .initial:n  = { ~ },
  output-separator .tl_set:N  = \l_jeroen_perms_output_separator_tl,
  output-separator .initial:n = { , },
 }

\NewDocumentCommand{\Pm}{ O{} m }
 {
  (
  \group_begin:
  \keys_set:nn { jeroen/perms } { #1 }
  \jeroen_cycle:n { #2 }
  \group_end:
  )
 }

\NewDocumentCommand{\permset}{ m }
 {
  \keys_set:nn { jeroen/perms } { #1 }
 }

\seq_new:N \l_jeroen_cycle_seq
\cs_new_protected:Npn \jeroen_cycle:n #1
 {
  \seq_set_split:NVn \l_jeroen_cycle_seq \l_jeroen_perms_input_separator_tl { #1 }
  \seq_use:NV \l_jeroen_cycle_seq \l_jeroen_perms_output_separator_tl
 }

\cs_generate_variant:Nn \seq_set_split:Nnn { NV }
\cs_generate_variant:Nn \seq_use:Nn { NV }
\ExplSyntaxOff

\begin{document}
$\Pm{1 2 3}$

$\Pm[output-separator=\;]{1 2 3}$

$\Pm[output-separator=;]{1 2 3}$

$\Pm[input-separator={,}]{1,2,3}$

\permset{output-separator=;}

$\Pm{1 2 3}$

\permset{input-separator=|}

$\Pm{1|2|3}$
\end{document}

可选参数中的键值对是当前排列的本地键值对,而命令中的键值\permset对是它们出现的组的本地键值对。扩展它以更改外部分隔符也很容易。

在此处输入图片描述

相关内容