我正在尝试使用 texshade 渲染多个对齐,但该包似乎存在问题。尝试使用文件时,控制台会输出以下内容:
失控的论点?
!段落在 \inf@@get 完成之前结束。
\par
l.13 \begin{texshade}{Result.fasta_alnenter code here
}
?
我尝试过 texshade 1.25 和 1.26 版本,但在 MSF 或 fasta_aln 文件中均无所获。
这里有一个最小的 tex 工作示例:
\documentclass[
]{article}
\usepackage{texshade}
\begin{document}
\begin{texshade}{Result.fasta_aln}
\hideconsensus
\end{texshade}
\end{document}
Result.fasta_aln的内容为:
>1aboA
NL-FVAL---YDFVASGDNTLSITKGEKLR-------VLGYNH-------NGEWCE--AQTKNGQGWVPSNYITPV-N--
---
>1ycsB
KGVIYAL---WDYEPQNDDELPMKEGDCMT-------IIHREDED-----EIEWWW--ARLNDKEGYVPRNLLGLY----
--P
>1pht
GYQYRAL---YDYKKEREEDIDLHLGDILTVNKGSLVALGFSDGQEARPEEIGWLNGYNETTGERGDFPGTYVEYIGRKK
ISP
>1vie
DR-----------VRKK--SGAAWQGQIVGWYCTNLTPEGYAVESEAHPGSV-------------QIYPVAALERI----
--N
>1ihvA
NF-RVYYRDSRDPVWKGPAK-LLWKGEGAV-------VIQDNS-------DIK-------------VVPRRKAKIIRD--
---
通过 .sty 文件可以找到 \inf@@get,但我不知道它为什么会失败(有人会认为是某种转义字符交互?)。有趣的是,在我运行 Linux 的桌面上尝试同样的操作没有出现任何问题。
以下是 .sty 文件中包含的定义:
\def\inf@@get#1 #2 #3 #4 #5 #6@{%
\def\first@{#1}
\def\second@{#2}
\def\third@{#3}
\xdef\fourth@{#4 @}
\expandafter\check@letter\fourth@
\ifnumber
\def\fourth@{#4}
\else
\xdef\fourth@{#5 @}
\expandafter\check@letter\fourth@
\ifnumber
\def\fourth@{#5}
\else
\def\fourth@{99999999}
\fi
\fi
\def\fifth@{#5}
\def\last@{#6}}
这里使用的命令是:
\expandafter\inf@@get\msfline
在 Overleaf 上尝试(使用)会导致同样的错误,损坏的输出作为图像附加。还会弹出一个额外的错误:
Misplaced alignment tab character &.
\msfline ->\par &
& & & @
l.24 {result.fasta_aln}
答案1
我发现有人在 CTAN 的 Texshade 包的评论中发布了这个解决方案:
修复使用 TeXshade v1.26 时遇到的错误:
- 在您的系统上找到文件 texshade.sty。这可能因您安装 LaTeX 的方式而异。
- 找到以下行(应该是 2021/04/01 发布的 v1.26 中的第 156 行):\xdef\par@{\expandafter\string\par}
- 用以下两行替换它:\xdef\par@{\par} \xdef\par@{\expandafter\string\par@}
现在就可以工作了。
应用此方法后,我还注意到,如果您同时使用 Textopo 包,它会引发更多错误 编辑:在 CTAN textopo 页面上,有针对此其他情况的类似修复。CTAN 的 Textopo
否则它工作正常。