Принимает строку в качестве аргумента и вызывает \discretionary{}{}{}
после каждого символа.Входная строка останавливается на первом знаке доллара, поэтому вы не должны его использовать.
\def\hyphenateWholeString #1{\xHyphenate#1$\wholeString}
\def\xHyphenate#1#2\wholeString {\if#1$%
\else\say{#1}\discretionary{}{}{}%
\takeTheRest#2\ofTheString
\fi}
\def\takeTheRest#1\ofTheString\fi
{\fi \xHyphenate#1\wholeString}
\def\say#1{#1}
Вы бы назвали его как \ hyphenateWholeString {CTAAAGAAAACAGGACG}.
Вместо \ discretionary {}{} {} вы также можете попробовать \ hspace {0pt}, если вам это нравится больше (и вы находитесь в среде латекса).Чтобы выровнять правое поле, я думаю, вам нужно выполнить более тонкую настройку (но см. Ниже).Эффект, конечно, минимизируется использованием шрифта фиксированной ширины.
Редакция:
\def\hyphenateWholeString #1{\xHyphenate#1$\wholeString\unskip}
\def\xHyphenate#1#2\wholeString {\if#1$%
\else\transform{#1}%
\takeTheRest#2\ofTheString\fi}
\def\takeTheRest#1\ofTheString\fi
{\fi \xHyphenate#1\wholeString}
\def\transform#1{#1\hskip 0pt plus 1pt}
Предложение Стива об использовании \hskip
звучит как очень хорошая идеядля меня, поэтому я сделал несколько исправлений.Обратите внимание, что я переименовал макрос \say
и сделал его более полезным, поскольку теперь он фактически выполняет преобразование.(Однако, если вы удалите \hskip
из \transform
, вам также необходимо удалить \unskip
в определении основного макроса.
Редактировать:
Существует также пакет seqsplit , который, похоже, предназначен для печати данных ДНК или длинных чисел. Они также предоставляют несколько вариантов более качественного вывода, так что, возможно, это то, что вы ищете...