Latex真的是地狱级

众所周知latex十分甚至九分的难学,写点文章费个死劲,排版地狱级(虽然排完了很整洁美观,但你绝对无法否认排版的过程是地狱级的,除非你不需要排版)

这两天,在我继续鼓捣我那个破指南的时候,我发现了更加地狱的事情……使用latex进行时区的转换并输出……

latex在某种程度上与word挺像的,我们都知道word是无法在不借助邪门插件(例如插入excel)或vb的情况下进行运算的
latex也是一样,甚至更近了一步,在不使用一大堆宏包和语法之前,你甚至无法计算一个最简单的1+1并输出2……

当你试图获取一个编写文档的时间并且把它加到文档里(例如:本文章写于 2024.05.17 13:38:55 GMT+08:00 )为了输出一个这样类型的文字,datetime2宏包必不可少,而我在写中文文档,又需要使用xelatex多次编译,然后,问题就出现了

  1. xelatex不会输出当前时区
  2. 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 个赞

我们临床医学本科生没有论文,只有好几个结业考试 :xk:

我们学校的新生指南没有模板,绝大部分都是我自己一个人干出来的……我倒是想借鉴其他学校的,可是大家没有用latex写的,都是用的网页和自建的的网站,但是我又没钱自己搭(也不会) :wl:

同意,但是看着各种warnings和奇奇怪怪的问题真的忍不住……

1 个赞

latex就是那種學習成本高於易用成本的典範。

1 个赞

年轻有为啊!我都是博士才开始用这个玩意儿,到最后提交的版本也有一堆 warnings 我都无视了(又不是不能用)……

这个一般都不会在新生指南里有,可以到 github 之类的地方搜一搜,会有很多的。Overleaf 或者其它平台有的时候也会用开源社区贡献的模板,可以找找看看,我记得免费也能用,我试过一次,还不用安装一堆本地依赖,只是我学校的 repo 不是在线的,我就懒得折腾环境什么的,直接参考 GitHub - caowenhan/hhuthesis: Aiming at the dissertations nonstandard format problems such as chart format, writing format and formula format, a simple and easy-to-use LaTeX template for Hohai dissertations is provided. The template strictly follows the requirements of the academic committee of Hohai University on the format of the dissertations and the corresponding national standards and specifications. 了。

慢慢我也学会与它们共存了,电脑上的奇奇怪怪小问题什么的,只要不浪费太多我的时间,我也就选择忽视掉……

1 个赞

是获取文件的修改时间吗?

1 个赞

我有一种感觉,Latex 这么难,是不是要被淘汰?

1 个赞

编译时间

1 个赞

还真不可能目前……因为没有软件的排班质量能在同等条件下超过它

谬赞了,纯粹被word逼的……故事过程见此

1 个赞

我投 markdown 一票(10年后)

2 个赞

LaTeX 可以读取命令输出吗?能行就用 date 命令获取时间?

1 个赞

尝试过

  • 直接取系统时间

    1. 无法精确到秒
    2. 没有时区
  • 你说的方法

    1. latexmk无法直接与环境交互,除非我为此专门写一个程序并做好兼容接口(

最终还是这样解决的

极其“不优雅”,或者说丑陋?

不过确实解决了……

1 个赞

这样?

❯ TZ=Asia/Shanghai date +'%Y.%m.%d %H:%M:%S GMT%:z'
2024.05.17 16:34:37 GMT+08:00

不过执行外部命令也不太优雅。

1 个赞

我的意思是用latex的datetime2宏包取时间,是我没说清楚,抱歉

latex怎么与系统命令行交互啊可是,我想到的唯一方法就是我上面说的,自己写软件并做好兼容接口……问题是我要有着能力我也不吐槽了啊(


二编:
其实texosquery宏包本质上大抵就是执行了系统命令(
也不是原生解决的……

1 个赞

MarkDown沒甚麼可能啦,方向都不太一樣,看看typst發展得如何。

1 个赞

如果涉及到稍微复杂的编程,超出LaTeX的处理范围时,其实可以考虑用其他脚本生成你需要的这段代码再用LaTeX编译。如果什么都想用LaTeX“原生”的解决是会很痛苦的。

1 个赞

只能说期待latex3了……

此外,如果用代码解决我确实能做到,但是

  1. 不优雅
  2. 对后来者难以理解

基于以上两点考虑我最终放弃了这个想法

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 个赞

我指的就是对于大版本的latex3更新(

2e还是不大行感觉

可惜寄了,蹲个4

1 个赞

大版本已经确定不会出了,因为实际上已经集成进 2e 了,可以看看我下面给的那篇知乎文章,就有(语法的)介绍。感觉按 LaTeX 开发团队的想法,也不会再有什么大版本了,应该只会在现有基础上修修补补了。

1 个赞