作者kerwinhui (kezza)
看板LaTeX
标题Re: [问题] \def展开时机
时间Wed Nov 23 13:49:15 2016
※ 引述《sppmg (sppmg)》之铭言:
: 试了很久,实在不理解\def的展开时机。
: \def\cmd{define} 之後,若将\cmd传入其他指令,
: 是会在使用到当下展开(进行运算)其定义,
是的
: 还是说只有定义当下的值呢?(这好像不太合理)
: 我想要让目录中,一般章节的条目显示为:「一、 目录名」
: 但附录要维持「A、 附录名」
: 所以我在.cls中首先改写\thecontentslabel 设定
: \gdef\thecontentslabel@chapter{
: \ifx\@chapapp\appendixname % 判断 \appendix
: \appendixname\thecontentslabel、
: \else
: \zhnumber{\thecontentslabel}、
: \fi}
恕删
问题是 \ifx\@chapapp\appendixname 永远都是 false,因为你忘了 \expandafter,
所以 TeX 直接拿字串 \@chapapp\appendixname 去给\ifx比了,然後因为第一二个字
\ 和 @ 不一样所以变成 false
改成 \expandafter\ifx\@chapapp\appendixname 便可以了
或者简单点用 apptools 的 \ifappendix (TeX) 或 \IfAppendix (LaTeX)
而你好像只要 chapter numbering 从\arabic 变成 \zhnumber 已而,应该不用写一个
cls 这麽麻烦吧?直接
\renewcommand\thechapter{\zhnumber{chapter}}
不行吗?
--
『我思故我在』怎样从法文变成拉丁文的:
je pense, donc je suis --- René Descartes, Discours de la Méthode (1637)
ego sum, ego existo --- ____, Meditationes de Prima Philosophia (1641)
ego cogito, ergo sum --- ____, Principia Philosophiae (1644)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.101.8
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LaTeX/M.1479880159.A.13F.html
1F:推 mewtwo: 高手..... 11/23 15:46
2F:推 sppmg: 啊!原来如此,非常感谢!(你有stack 帐号吗?要不要去注解 11/23 19:31
3F:→ sppmg: 下?) 我会改\appendix 是因为zhnumber不接受英文(\@Alph) 11/23 19:33
4F:推 sppmg: 不直接改\thechapter是因为有些指令会用到他,譬如\thesect 11/23 19:36
5F:→ sppmg: ion 定义:\thechapter.\@arabic\c@section 会变成 一.1 11/23 19:37
6F:→ sppmg: def 展开方面,我还是有些疑问。晚点我再加上去,谢谢你罗! 11/23 19:45
7F:→ sppmg: 喔!对了,写cls不是专为改数字啦!XD 是cls中有这项功能。 11/23 19:46
8F:推 sppmg: 将\expandafter加进 \gdef\thecontentslabel@chapter 後 11/23 20:04
9F:→ sppmg: 遇到附录还是没办法改输出耶!还是zhnumber,所以通通变"零" 11/23 20:07
10F:→ sppmg: (而且在TL2012的zhnumber 还会直接error... 当初debug好久) 11/23 20:25