我需要在 Latex 文档中包含相对较小的基因组序列(尽管如此,它们仍然是约 600-900 个 A、T、G 和 C 的单词),但我找不到办法在达到一定数量的字符后强制换行。
我看到了大量关于此事的类似主题,其中大多数引用了清单和可自由支配的内容,但所有建议的解决方案都依赖于长单词的小尺寸来手动添加“不可见的断点”,或者依赖于在单词内,一些特殊字符(点,下划线)或模式可以被定义为可破坏区域。
不幸的是,我处理的序列太长,无法手动编辑,并且没有可以在自由裁量范围内使用的特殊模式,如果我想坚持每行 50 个碱基的标准,那么这些解决方案都无济于事。
我真的没有什么主意,所以如果您有任何线索,请分享!
下面是我需要包含的序列示例:
CTCCTTGGGCTGTTATTCCGTAAAAGTATTTGTGGAAGATACGGCTGTCATACATGATATGTTTTTTGTTTATAACAATAGTTCTTTCTTTGATTTCACCATAGGTTGCCTCAAATTGCTCTTTTGTTGCTTGTCCAGCTGTTAAGACTAAATGTTTTGACCCCTCATTTATAAGACCGATTGCGTTGAATGGTAAGACATTCTGTTGTGCTGATTGTAATTCTGAATAGCTACGGATTTTTATGAAGATATAGTTTTTTAATATTGGTATTTCATTCCAGACATACTTCTGTATAAAGGATTTATTAAACGGTGTTGTTTTGATTGCTCTATAATACTTATCTTGTTGTCCTCTTAATTTTACCCAAGGTCTTTCAAACTCTTGGGAGTTAATGATTATAAGCATATTGTAAAGCTGTCCAGCTAATCCGAAGAATACTGGAAGCCAGTGGGTAAAGCTTGTCTGTTTTGGTAAAGCTGTTTGAACGTCTGACAAGAACAAGTCCAGACCTTCATATTTGTGGATTTTTTGAAACTTCATATTTTGATATGAACCGTCTACAATATCACTATATTTTACTGGTTGCCCAGTTTTTTGATTAATGTATCCAGGTCTTTAATATCTACTACTAAAACCACCGTAACCATAGTCCACGTTAGAGATATAGAGAGGTTTCGCATAAATGTGAACCCAGATTGCTTGTTGTTGTCTTTCATAACTCATTTGAAGACCAGTTTTAATGCGTTCTTTAATTGCTTGATACGTT
答案1
这seqsplit
包裹将通过添加合适的断点来分解此类表达式。它专为此类 DNA 序列而设计,并以复杂的方式处理各种形式的输入。但是,您希望在特定数量的字符后分解您的材料。这可以通过提供的命令来实现xstring
包裹通过其拆分命令\StrSplit
:
\documentclass{article}
\usepackage{xstring,etoolbox}
\newcommand{\fixsplit}[2]{\StrLen{#2}[\mynum]\ifnumcomp{\mynum}{<}{\numexpr(#1)+1\relax}%
{#2}%
{\StrSplit{#2}{#1}{\myfirststr}{\mysecondstr}\myfirststr\linebreak
\fixsplit{#1}{\mysecondstr}}}
\begin{document}
\begin{quote}
\ttfamily
\fixsplit{30}{CTCCTTGGGCTGTTATTCCGTAAAAGTATTTGTGGAAGATACGGCTGTCATACATGATATGTTTTTTGTTTATAACAATAGTTCTTTCTTTGATTTCACCATAGGTTGCCTCAAATTGCTCTTTTGTTGCTTGTCCAGCTGTTAAGACTAAATGTTTTGACCCCTCATTTATAAGACCGATTGCGTTGAATGGTAAGACATTCTGTTGTGCTGATTGTAATTCTGAATAGCTACGGATTTTTATGAAGATATAGTTTTTTAATATTGGTATTTCATTCCAGACATACTTCTGTATAAAGGATTTATTAAACGGTGTTGTTTTGATTGCTCTATAATACTTATCTTGTTGTCCTCTTAATTTTACCCAAGGTCTTTCAAACTCTTGGGAGTTAATGATTATAAGCATATTGTAAAGCTGTCCAGCTAATCCGAAGAATACTGGAAGCCAGTGGGTAAAGCTTGTCTGTTTTGGTAAAGCTGTTTGAACGTCTGACAAGAACAAGTCCAGACCTTCATATTTGTGGATTTTTTGAAACTTCATATTTTGATATGAACCGTCTACAATATCACTATATTTTACTGGTTGCCCAGTTTTTTGATTAATGTATCCAGGTCTTTAATATCTACTACTAAAACCACCGTAACCATAGTCCACGTTAGAGATATAGAGAGGTTTCGCATAAATGTGAACCCAGATTGCTTGTTGTTGTCTTTCATAACTCATTTGAAGACCAGTTTTAATGCGTTCTTTAATTGCTTGATACGTT}
\end{quote}
\end{document}
请注意,我选择使用固定宽度字体打印结果,否则您将得到相当奇怪的效果。还请注意,这种方式的xstring
工作方式是,操作结果通常必须存储在宏中,而不是直接使用。
答案2
你可以尝试一下这个吗:
\documentclass{article}
\begin{document}
\parindent=0pt
\ttfamily
\makeatletter
\def\xfoo#1#2{\@tempcnta=0%
\@tfor\xx:=#2\do{\advance\@tempcnta 1%
\xx\ifnum\the\@tempcnta=#1\newline\@tempcnta=0\fi%
}%
}
\xfoo{10}{CTCCTTGGGCTGTTATTCCGTAAAAGTATTTGTGGAAGATACGGCTGTCATACATGATATGTTTTTTGTTTATAACAATAGTTCTTTCTTTGATTTCACCATAGGTTGCCTCAAATTGCTCTTTTGTTGCTTGTCCAGCTGTTAAGACTAAATGTTTTGACCCCTCATTTATAAGACCGATTGCGTTGAATGGTAAGACATTCTGTTGTGCTGATTGTAATTCTGAATAGCTACGGATTTTTATGAAGATATAGTTTTTTAATATTGGTATTTCATTCCAGACATACTTCTGTATAAAGGATTTATTAAACGGTGTTGTTTTGATTGCTCTATAATACTTATCTTGTTGTCCTCTTAATTTTACCCAAGGTCTTTCAAACTCTTGGGAGTTAATGATTATAAGCATATTGTAAAGCTGTCCAGCTAATCCGAAGAATACTGGAAGCCAGTGGGTAAAGCTTGTCTGTTTTGGTAAAGCTGTTTGAACGTCTGACAAGAACAAGTCCAGACCTTCATATTTGTGGATTTTTTGAAACTTCATATTTTGATATGAACCGTCTACAATATCACTATATTTTACTGGTTGCCCAGTTTTTTGATTAATGTATCCAGGTCTTTAATATCTACTACTAAAACCACCGTAACCATAGTCCACGTTAGAGATATAGAGAGGTTTCGCATAAATGTGAACCCAGATTGCTTGTTGTTGTCTTTCATAACTCATTTGAAGACCAGTTTTAATGCGTTCTTTAATTGCTTGATACGTT}
\end{document}
答案3
如果您可以change and replace
使用编辑器选择文本,则在长字符串中用、 by 、C
byC\brk{}
和G
by替换。如果您不想让文本消失在视野之外,请在换行符处使用G\brk{}
A
A\brk{}
T
T\brk{}
%
\documentclass{article}
\newcommand*{\brk}{\discretionary{}{}{}\hfil}
\begin{document}
\noindent C\brk{}T\brk{}C\brk{}C\brk{}T\brk{}T\brk{}G\brk{}G\brk{}G\brk{}C\brk{}T\brk{}G\brk{}T\brk{}T\brk{}A\brk{}T\brk{}T\brk{}C\brk{}C\brk{}G\brk{}T\brk{}A\brk{}A\brk{}A\brk{}A\brk{}G\brk{}T\brk{}A\brk{}T\brk{}T\brk{}T\brk{}G\brk{}T\brk{}G\brk{}G\brk{}A\brk{}A\brk{}G\brk{}A\brk{}T\brk{}A\brk{}C\brk{}G\brk{}G\brk{}C\brk{}T\brk{}G\brk{}T\brk{}C\brk{}A\brk{}T\brk{}A\brk{}C\brk{}A\brk{}T\brk{}G\brk{}A\brk{}T\brk{}A\brk{}T\brk{}G\brk{}T\brk{}T\brk{}T\brk{}T\brk{}T\brk{}T\brk{}G\brk{}T\brk{}T\brk{}T\brk{}A\brk{}T\brk{}A\brk{}A\brk{}C\brk{}A\brk{}A\brk{}T\brk{}A\brk{}G\brk{}T\brk{}T\brk{}C\brk{}T\brk{}T\brk{}T\brk{}C\brk{}T\brk{}T\brk{}T\brk{}G\brk{}A\brk{}T\brk{}
\hfill\mbox{}
\medskip
\noindent
C\brk{}T\brk{}C\brk{}C\brk{}T\brk{}T\brk{}G\brk{}G\brk{}G\brk{}C\brk{}%
T\brk{}G\brk{}T\brk{}T\brk{}A\brk{}T\brk{}T\brk{}C\brk{}C\brk{}G\brk{}%
T\brk{}A\brk{}A\brk{}A\brk{}A\brk{}G\brk{}T\brk{}A\brk{}T\brk{}T\brk{}%
T\brk{}G\brk{}T\brk{}G\brk{}G\brk{}A\brk{}A\brk{}G\brk{}A\brk{}T\brk{}%
A\brk{}C\brk{}G\brk{}G\brk{}C\brk{}T\brk{}G\brk{}T\brk{}C\brk{}A\brk{}%
T\brk{}A\brk{}C\brk{}A\brk{}T\brk{}G\brk{}A\brk{}T\brk{}A\brk{}T\brk{}%
G\brk{}T\brk{}T\brk{}T\brk{}T\brk{}T\brk{}T\brk{}G\brk{}T\brk{}T\brk{}%
T\brk{}A\brk{}T\brk{}A\brk{}A\brk{}C\brk{}A\brk{}A\brk{}T\brk{}A\brk{}%
G\brk{}T\brk{}T\brk{}C\brk{}T\brk{}T\brk{}T\brk{}C\brk{}T\brk{}T\brk{}%
T\brk{}G\brk{}A\brk{}T\brk{}
\hfill\mbox{}
\end{document}