CCR
2024 年5 月 17 日 05:54
1
众所周知latex十分甚至九分的难学,写点文章费个死劲,排版地狱级(虽然排完了很整洁美观,但你绝对无法否认排版的过程是地狱级的,除非你不需要排版)
这两天,在我继续鼓捣我那个破指南的时候,我发现了更加地狱的事情……使用latex进行时区的转换并输出……
latex在某种程度上与word挺像的,我们都知道word是无法在不借助邪门插件(例如插入excel)或vb的情况下进行运算的
latex也是一样,甚至更近了一步,在不使用一大堆宏包和语法之前,你甚至无法计算一个最简单的1+1并输出2……
当你试图获取一个编写文档的时间并且把它加到文档里(例如:本文章写于 2024.05.17 13:38:55 GMT+08:00
)为了输出一个这样类型的文字,datetime2宏包必不可少,而我在写中文文档,又需要使用xelatex多次编译,然后,问题就出现了
xelatex不会输出当前时区
xelatex无法获取当前时间的秒数,只显示到分钟
为了解决这一系列问题,我开始引入其他的宏包,又从xelatex的手动编译换成使用latexmk传参自动编译,然后开始重写日期的输出格式与逻辑……
最后,因为latex无法计算时区转换,我迫不得已,又引入了一个latexmk的资源文件用于确定时区……
整一个过程都是地狱级的,中文互联网罕有资料,歪果仁本身不需要以中文的格式输出,也不怎么需要考虑东八区的时区转换导致无资料可以借鉴,最最关键的是,datetime2整篇文章也是写的看不懂一点,对新手太不友好了,为此我还试图把它的doc交给ai,最后得出的结论就是白白浪费了2个小时和它掰扯……
然后,刚刚我在编译的时候又发现,完全相同的传参,github actions上面的和我本地编译出来的就不一样,我本地的就取不到秒数,actions上面的就没问题,然后我开始各种排查,2000多行的log也看了,datetime2的文档都翻烂了也没明白怎么回事
然后,我灵机一动,看了看新引用的宏包texosquery,在他的开篇有这么一句话,需要JRE8……我尼玛赶紧去找,发现真的没有,急急忙忙安装上以后再次编译终于正常了……
上面说的是编译和排版地狱级,接下来轮到编写文章本身了
latex workshop的花括号提示同样是地狱级的,你永远都不知道花括号到底在哪里少了一级,编译后的错误提示更是狗屎,明明是a文章的错误他给你引到b文章里面去,原因是a文章里的括号未闭合,而他因此给你匹配到了紧邻的b文章里面……
感谢糟糕的错误提示,现在我已经完全学会并掌握了使用二分法排查错误的基本要领……
编辑时的提示也是一言难尽,该有的不出,不该有的乱提示……
整体体验,地狱级MAX……
另附一个这几天刚刚鼓捣完的latex自动actions的配置,配置action的过程也是地狱级的,文档与faq极其不完善,为了一个小问题翻了半个多小时的issues才找到差不多的……
5 个赞
都是小技术问题,内容才是核心。真的大佬,用 OneNote 都能写出论文。
我的建议是,随手抄起来学校(或者别的地方的)模板,然后改改先用着,有需求再一点点问 chatgpt
1 个赞
CCR
2024 年5 月 17 日 07:05
3
我们临床医学本科生没有论文,只有好几个结业考试
我们学校的新生指南没有模板,绝大部分都是我自己一个人干出来的……我倒是想借鉴其他学校的,可是大家没有用latex写的,都是用的网页和自建的的网站,但是我又没钱自己搭(也不会)
xiaoguai945yeah:
都是小技术问题,内容才是核心。
同意,但是看着各种warnings和奇奇怪怪的问题真的忍不住……
1 个赞
我有一种感觉,Latex 这么难,是不是要被淘汰?
1 个赞
CCR
2024 年5 月 17 日 08:20
9
Qingwa:
,是不是要被淘汰?
还真不可能目前……因为没有软件的排班质量能在同等条件下超过它
xiaoguai945yeah:
年轻有为啊!
谬赞了,纯粹被word逼的……故事过程见此
如题,首先排除word,受够了word在不同电脑上排版样式都不同的问题……
个人的选择有以下两个
1 latex,优点显而易见,排版样式绝对统一,而最明显的缺点就是学习门槛高,非所见即所得
2 内嵌ods的pdf(由libreoffice提供支持),优点是一个PDF文件到处跑,缺点是WPS不支持od s,并且在不同的电脑上也有可能出现格式不统一的问题……
问题的背景是想搞一个一直用下去的新生入学指南。现在我已经写完了,但是希望后面的年级也能在我原稿的基础上进行编辑。因此希望能搞一个格式统一,可持续修改的文稿格式(我自己会用latex但你不能指望别人也学着用啊)
二编:
请注意,面向的群体为医学类学生,不要各种gitbook啥的……对大多数人来说难度过高
已经打算用Latex全盘重写了,决定放弃“简便易行”的最初目标,因为发现简便易行和格式统一是互斥的……管他身后洪水滔天……
三编:正在用latex重写
四编:LaTeX重写完毕,已发版1.0.0
五编:更新版本至1.0.8
六编:使用tabularray全面重写,项目架构全面重置
https://gitee.com/Lin…
1 个赞
LaTeX 可以读取命令输出吗?能行就用 date
命令获取时间?
1 个赞
CCR:
无法精确到秒
没有时区
这样?
❯ TZ=Asia/Shanghai date +'%Y.%m.%d %H:%M:%S GMT%:z'
2024.05.17 16:34:37 GMT+08:00
不过执行外部命令也不太优雅。
1 个赞
CCR
2024 年5 月 17 日 08:46
14
我的意思是用latex的datetime2宏包取时间,是我没说清楚,抱歉
latex怎么与系统命令行交互啊可是,我想到的唯一方法就是我上面说的,自己写软件并做好兼容接口……问题是我要有着能力我也不吐槽了啊(
二编:
其实texosquery宏包本质上大抵就是执行了系统命令(
也不是原生解决的……
1 个赞
Kyun
2024 年5 月 17 日 09:23
15
MarkDown沒甚麼可能啦,方向都不太一樣,看看typst發展得如何。
1 个赞
xml123
2024 年5 月 17 日 10:12
16
如果涉及到稍微复杂的编程,超出LaTeX的处理范围时,其实可以考虑用其他脚本生成你需要的这段代码再用LaTeX编译。如果什么都想用LaTeX“原生”的解决是会很痛苦的。
1 个赞
LaTeX3 早已经出了,只不过放弃了作为新的大版本的计划。可以看看 The LaTeX Project (latex-project.org) 。
A while ago we made the decision to drop the idea of a separate LaTeX3 format that would exist in parallel to LaTeX2e, but instead decided to gradually modernize LaTeX to keep it competitive in today’s world while maintaining compatibility methods for older documents.
(机翻)不久前,我们决定放弃与 LaTeX2e 并行存在的单独 LaTeX3 格式的想法,而是决定逐步现代化 LaTeX,以保持其在当今世界的竞争力,同时保持旧文档的兼容性方法。
知乎也有相关教程了,例如一份勉强简短的LaTeX3编程介绍 - 知乎 (zhihu.com) ,想学习 3 的语法也可以看看。
不过真要现代化一点,抛去历史包袱,如果不会太关注很细节的排版的话,似乎有个 Typst 可以了解一下?我现在是没啥深入研究 LaTeX 的打算,等 Typst 社区及相关工具完善一点也许就会投奔 Typst 了。
1 个赞
大版本已经确定不会出了,因为实际上 已经集成进 2e 了,可以看看我下面给的那篇知乎文章,就有(语法的)介绍。感觉按 LaTeX 开发团队的想法,也不会再有什么大版本了,应该只会在现有基础上修修补补了。
1 个赞