Automatically capitalize first letter of first word in a new sentence in LaTeX
我知道乳胶的一个吹嘘点是它没有这种微软件行为。尽管如此,它有时还是有用的。
在您键入(非反斜杠)句点后,LaTex已经添加了一个额外的空格,因此它也可以使以下字母自动大写。
有没有一种明显的方法来编写这样的宏,或者有一个乳胶包已经这样做了?
下面的代码解决了这个问题。
1 2 3 4 5 6 7 8 9 10 11 |
ext= }
如果下一个字母是空格,则插入
很久以前,有人在comp.tex t.tex上讨论过这个想法,总的结论是你做不好。在我的书中,令人满意的是,不需要让角色活跃起来,但我看不出这是如何起作用的。
就我个人而言,我想让空间活动,然后让它查看space factor,如果因子为3000,则将其设为大写。
有点像
1 2 3 4 5 6 7 8 9 10 11 12 13 | \catcode\ \active % latex already has a saved space character -- \space \def {\ifhmode% \spacefactor is invalid % (or something) in vertical mode \ifnum\spacefactor<3000\else% note: with space active, % even cs-ended lines need %-termination \expandafter\gobbleandupper\fi}% \def\gobbleandupper#1{\def\tempa{#1}\def\tempb{ }% \ifx\tempa\tempb% can''t indent the code, either :-( % here, we have another space \expandafter\gobbleandupper% try again \else\space% insert a"real" space to soak up the % space factor \expandafter\MakeUppercase\fi}% |
号
这并不能真正做到这一点——有足够的零头编织一个费尔伊斯尔跳投。例如,假设我们不能依赖乳胶中的每一个字母,如何将段落的第一个字母大写?
不。。。不管它有多痛(这就是为什么我要避免不必要的关键操作),我们都需要"正确地"输入乳胶:-(
我决定用以下方法解决:
因为我总是在确定结果之前三次编译乳胶代码(为了正确地进行分页和引用),所以我决定在这个过程中构建语句的大写。
因此,我现在有一个shell脚本,它首先调用我的大写脚本(用crm114编写),然后调用pdflatex三次,然后调用okular。这样,所有的事情都是由一个命令产生的。