我已经在这个问题上困惑了一段时间了。
我有一张包含一些 DNA 序列的表格,tabularx
不知道在哪里给序列加上连字符,表格超出了页面的边距。为了解决这个问题,我尝试使用包pbox
并手动给序列加上连字符,但收效甚微。每个表格行的代码都相同,但表格的顶部与底部重叠——我似乎不知道为什么。
\begin{table}[h]
\centering
\begin{tabularx}{\textwidth}{|X|X|X|}
\hline
\multicolumn{3}{|c|}{\textbf{TruSeq Adapter Sequences.}} \\
\hline
& \textbf{Read 1} & \textbf{Read 2} \\
\hline
\textbf{Forward Adapter} & \small{\pbox[t][0.3cm]{4cm}{AGATCGGAAGAGCACAC-\\GTCTGAACTCCAGTCAC}} & \small{\pbox[t][0.3cm]{4cm}{AGATCGGAAGAGCGTCG-\\TGTAGGGAAAGAGTGT}} \\
& & \\
\hline
\textbf{Reverse Compliment} & \small{\pbox[t][0.3cm]{4cm}{TCTAGCCTTCTCGTGT-\\GCAGACTTGAGGTCAGTG}} & \small{\pbox[t][0.3cm]{4cm}{TCTAGCCTTCTCGCAG-\\CACATCCCTTTCTCACA}} \\
& & \\
\hline
\end{tabularx}
答案1
您可以使用\seqsplit
同名包中的命令,或者对于更复杂的包,使用命令dnaseq
。
\documentclass{article}
\usepackage{geometry}
\usepackage{tabularx, makecell, seqsplit}
\begin{document}
\begin{table}[h]
\centering\setcellgapes{0.5ex}\makegapedcells
\begin{tabularx}{\textwidth}{|X|X|X|}
\hline
\multicolumn{3}{|c|}{\textbf{TruSeq Adapter Sequences.}} \\
\hline
& \textbf{Read 1} & \textbf{Read 2} \\
\hline
\textbf{Forward Adapter} & \small\seqsplit{AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC}& \small\seqsplit{AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT} \\
\hline
\textbf{Reverse Compliment} & \small\seqsplit{TCTAGCCTTCTCGTGTGCAGACTTGAGGTCAGTG} & \small\seqsplit{TCTAGCCTTCTCGCACACATCCCTTTCTCACA} \\
\hline
\end{tabularx}
\end{table}
\end{document}
答案2
我建议使用“手工制作”的序列分割宏:
\documentclass{article}
\usepackage{xparse}
\usepackage{tabularx}
\usepackage{booktabs} % for the second realization
\ExplSyntaxOn
\NewDocumentCommand{\sequence}{m}
{
\seq_set_split:Nnn \l_tmpa_seq { } { #1 }
\seq_use:Nn \l_tmpa_seq { \linebreak[0] }
}
\ExplSyntaxOff
\begin{document}
\begin{table}[htp]
\caption{A caged table}
\medskip
\begin{tabularx}{\textwidth}{|l|*{2}{>{\raggedright\arraybackslash}X|}}
\hline
\multicolumn{3}{|c|}{\textbf{TruSeq Adapter Sequences.}} \\
\hline
& \textbf{Read 1} & \textbf{Read 2} \\
\hline
\textbf{Forward Adapter} &
\sequence{AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC} &
\sequence{AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT} \\
\hline
\textbf{Reverse Complement} &
\sequence{TCTAGCCTTCTCGTGTGCAGACTTGAGGTCAGTG} &
\sequence{TCTAGCCTTCTCGCAGCACATCCCTTTCTCACA} \\
\hline
\end{tabularx}
\end{table}
\begin{table}[htp]
\caption{An uncaged table}
\medskip
\begin{tabularx}{\textwidth}{@{}l*{2}{>{\raggedright\arraybackslash}X}@{}}
\toprule
\multicolumn{3}{c}{\textbf{TruSeq Adapter Sequences.}} \\
\midrule
& \multicolumn{1}{c}{\textbf{Read 1}} & \multicolumn{1}{c}{\textbf{Read 2}} \\
\cmidrule(lr){2-2}\cmidrule(l){3-3}
\textbf{Forward Adapter} &
\sequence{AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC} &
\sequence{AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT} \\
\addlinespace
\textbf{Reverse Complement} &
\sequence{TCTAGCCTTCTCGTGTGCAGACTTGAGGTCAGTG} &
\sequence{TCTAGCCTTCTCGCAGCACATCCCTTTCTCACA} \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
该\sequence
宏将输入存储在一个序列中,然后使用 来在任意两个项目之间添加一个可行的换行点\linebreak[0]
。
我热烈建议底部样式。