尝试更改包中的预定义值

尝试更改包中的预定义值

我正在尝试使用 dnaseq 包(文档在此处:http://mirrors.linsrv.net/tex-archive/macros/latex/contrib/dnaseq/dnaseq.pdf

基本上,它会获取您在“\DNA!”和“!”之间输入的任何内容,将其组织成可自定义长度的块,并在左侧显示带有编号的文本,从 1 开始。

这个包对于显示易于阅读的 DNA 序列很有用,但出于某种原因,我希望它从负数开始编号(实际上我的起始参考位于我的序列的中间)。

所以我必须将起始数字重新定义为负数。我对 Latex 并不陌生,但我从未尝试过自定义包,这就是为什么我请求一些帮助:

-在代码中本地化要改变的变量(我认为它是 \@tempcntb=0)

- 编写一个命令来从我的序言中重新定义这个变量(类似于 \def,不习惯它的语法)

这个包相对简单,所以我希望有人能帮助我。

不管怎样,谢谢你 !

答案1

提问时,请始终提供“MWE”完整文档并说明预期输出应该是什么,这使得回答/测试问题变得更加容易。这是一个未经测试的答案。

dnaseq 定义

\def\DNA#1{%
   \def\@DNA@end{#1}\bgroup\ttfamily\DNAc@lcline
   \settoheight\dimen@{I}\advance\dimen@ by 1pt
   \edef\htst{\the\dimen@}%
   \def\struty{\rule[-.5pt]{\z@}{\htst}}%
   %% dnabase per line counter
   \count@=0
   %% block counter
   \@tempcnta=0
   %% total dnabase counter
   \@tempcntb=0
   \fboxrule=0pt \fboxsep=0pt
   \noindent\phantom{\DNAreserve}\llap 1\
   \@DNA
}

例如,你可以在加载包后

\makeatletter
\def\DNA#1#2{%
   \def\@DNA@end{#2}\bgroup\ttfamily\DNAc@lcline
   \settoheight\dimen@{I}\advance\dimen@ by 1pt
   \edef\htst{\the\dimen@}%
   \def\struty{\rule[-.5pt]{\z@}{\htst}}%
   %% dnabase per line counter
   \count@=0
   %% block counter
   \@tempcnta=0
   %% total dnabase counter
   \@tempcntb=#1
   \fboxrule=0pt \fboxsep=0pt
   \advance\@tempcntb 1
   \noindent\phantom{\DNAreserve}\llap{\the\@tempcntb}\
   \advance\@tempcntb -1
   \@DNA
}
\makeatother

并使用...\DNA{25}!....! 将计数器从 25 而不是 0 初始化。

相关内容