用于复杂换行符的制表宏(或类似环境)

用于复杂换行符的制表宏(或类似环境)

您我有一个复杂的转录与中线对齐的文本,我一直使用制表符来自动进行,但它显然不会换行甚至我想编写一个宏(除非已经存在)可以执行以下操作:

1 xxxxxxxxxxxxxxxx\=(tab yuydrtstop)xxxxxx\=xxxxxxx|xx\=yyyfzdfyggthrxxxxxxxxxxxx
2                   yyyyyyyyyyyyyyyyyyyyyyyyy|yyyyyyyyyyyyyyyyyy
3                                     zzzzzzz|zzzzzz
4                                            |    aaa

将被分解成:

1 xxxxxxxxxxxxxxxx\=(tab stop)xxxxxx\=xxxxxxx
2                   yyyyyyyyyyyyyyyyyyyyyyyyy
3                                     zzzzzzz
4 xx\=xxxxxxxxxxxx
5 yyyyyyyyyyyyyyyyyy
6 zzzzzz
7     aaa

我希望在必要时换行,并在最后一行换行后继续下一行,并且顺序相同。我希望这有意义,而且我不会把它弄得太复杂。我很感激任何建议,手动操作很麻烦,而且每次页面布局更改后都需要重做。

答案1

我不确定您是否以自动化方式生成这些成绩单。此外,您的示例成绩单是否代表了一般情况(例如,您给出了 2 列,我认为总是如此)。我在下面提供的解决方案中假设了这一点,并对排版(如字体)做了一些其他假设。这是基本想法...

我们使用具有 2 列的 来排版结构tabular。您以类似于示例中的形式提供tabular内容(使用 指定换行符&),然后打印两次。第一次只显示左列,而第二次只显示右列。每次打印内容时,都会使用中描述的技术来填补缺失的列删除列的最简单方法?environ包裹可以轻松收集中的所有内容tabular并使其可用(用于多次用途)\BODY,从而可以进行两次处理。

在下面的例子中,我使用\ttfamily(等距 Computer Modern 字体)排版成绩单,因为它可以轻松实现跨行水平对齐。此外,我还习惯于\phantom调整以填充某些行,使其包含正确数量的“空白字母”。array包裹提供\newcolumntype用于指定“gobble column”的宏H。新的“line-breakable”tabular包含在创建的transcript环境内:

\documentclass{article}
\usepackage{environ}% http://ctan.org/pkg/environ
\usepackage{array}% http://ctan.org/pkg/array
\newcolumntype{H}{>{\setbox0=\hbox\bgroup}c<{\egroup}@{}}% Gobble column

\NewEnviron{transcript}{%
  \begin{tabular}{r@{}H}
    \BODY
  \end{tabular} \par  
  \begin{tabular}{H@{}l}
    \BODY
  \end{tabular}
}

\begin{document}

\ttfamily % Monospaced Computer Modern

tabular \textrm{environment:}

\begin{tabular}{r@{}l}
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&xxxxxxxxxxxxxx \\
      yyyyyyyyyyyyyyyyyyyyyyyyy&yyyyyyyyyyyyyyyyyy \\
                        zzzzzzz&zzzzzz \\
                               &\phantom{aa}aaa
\end{tabular}

transcript \textrm{environment:}

\begin{transcript}
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&xxxxxxxxxxxxxx \\
      yyyyyyyyyyyyyyyyyyyyyyyyy&yyyyyyyyyyyyyyyyyy \\
                        zzzzzzz&zzzzzz \\
                               &\phantom{aa}aaa
\end{transcript}
\end{document}

表格与文字记录

上图展示了常规tabular环境transcript

相关内容