将公式拆分为多行(自动)

将公式拆分为多行(自动)

我想让 LaTeX 拆分固定宽度表格内的公式。该公式是一个组理论词(类似于$a_1b_3a_5b_3^{-1}$)。

它应该自动地将它拆分到元素之间的某个位置,以便它适合表格。我以为seqsplit可能会成功,但在以下代码示例中:

\documentclass{article}
\usepackage{seqsplit}


\begin{document}

\begin{tabular}{p{4cm}}
 \seqsplit{$a_1b_3a_5b_3^{-1}$}\\
 \seqsplit{$a_1$ $b_3$ $a_5$ $b_3^{-1}$}\\
 \seqsplit{abcd}
\end{tabular}

\end{document}

公式的两种变体都只会引发大量形式错误Missing { inserted \seqsplit{$a_1b_3a_5b_3^{-1}$},而abcd-sample 则有效。

第二个例子实际上不会给出预期的结果,因为应该有元素之间没有空格

有人有解决这个问题的方法吗?

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{array}


\begin{document}

\begin{tabular}{>{\spaceskip=1sp\relax\raggedright\arraybackslash}p{2cm}}
\hline
 $a_1$ $b_3$ $a_5$ $b_3^{-1}$ $a_1$ $b_3$ $a_5$ $b_3^{-1}$\\
\hline
\end{tabular}

\end{document}

答案2

您可以按单个序列输入长单词,并\hfil\allowbreak\hfilneg在每个字母前添加。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\longword}{m}
 {
  \magula_longword:n { #1 }
 }

\tl_new:N \l_magula_longword_tl

\cs_new_protected:Nn \magula_longword:n
  \tl_set:Nn \l_magula_longword_tl { #1 }
  \regex_replace_all:nnN
   { ([a-z]) }
   { \c{hfil}\c{allowbreak}\c{hfilneg} \1 }
   \l_magula_longword_tl
  $\l_magula_longword_tl$
 }
\ExplSyntaxOff

\begin{document}

\begin{tabular}{p{4cm}}
 \longword{
   a_1b_3a_5b_3^{-1}a_1b_3a_5b_3^{-1}abcd
   a_1b_3a_5b_3^{-1}a_1b_3a_5b_3^{-1}
   a_1b_3a_5b_3^{-1}a_1b_3a_5b_3^{-1}
   a_1b_3a_5b_3^{-1}a_1b_3a_5b_3^{-1}
   a_1b_3a_5b_3^{-1}a_1b_3a_5b_3^{-1}abcd
 }
\end{tabular}

\end{document}

在此处输入图片描述

相关内容