LaTeX 注释移除
更新时间:2026-09-14
简介
文档注释移除算子,删除 LaTeX 源码里的 % 注释:行内注释与整行注释两条规则分别可开关,转义的 % 不会被误删。doc_type 当前只实现了 tex,不处理 Python / C 等编程语言的注释。
功能描述
- 行内注释规则
[^\]%.+$(re.MULTILINE):转义的%不会被误当注释删掉 - 整行注释规则 `^%.*
?(re.MULTILINE`):连同该行的换行符一起删除
- 两条规则分别由
inline/multiline控制,默认都开;执行顺序是先删行内注释,再删整行注释 doc_type不在("tex",)中时,构造阶段直接抛ValueError- 输入 None 的行返回 None;单行异常记日志并返回 None,不中断整批
算子参数
输入
| 输入 | 含义 |
|---|---|
| texts | 文本字符串数组 |
输出
| 输出 | 含义 |
|---|---|
| result | 删除注释后的文本(string),输入 None 返回 None |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| doc_type | str | "tex" | 文档类型;当前只支持 tex,其他值构造时报错 |
| inline | bool | True | 是否删除行内注释 |
| multiline | bool | True | 是否删除整行注释 |
注意事项
- 行内注释的正则会连
%前面的那一个字符一起吃掉:code = 1 % trailing comment的结果是code = 1(%前的空格被删),a%b会被整体删成空串。 %后至少要有一个字符才算行内注释,行尾孤立的%(如x %)不会被删。- 行首的
%不满足[^\]的前导字符要求,只能靠multiline=True删除;把multiline关掉,整行注释会保留。
调用示例
Python
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.text.remove_comments import RemoveComments
10
11if __name__ == "__main__":
12 if os.getenv("DAFT_RUNNER", "native") == "ray":
13 import ray
14 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
15 daft.set_runner_ray()
16 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
17
18samples = {
19 "texts": [
20 "% full line comment
21real line
22code = 1 % trailing comment",
23 "escaped 50\% stays here",
24 None,
25 ]
26 }
27 ds = daft.from_pydict(samples)
28 ds = ds.with_column(
29 "result",
30 aihc_udf(
31 RemoveComments,
32 construct_args={"doc_type": "tex", "inline": True, "multiline": True},
33 num_cpus=1,
34 concurrency=1,
35 batch_size=4,
36 )(col("texts")),
37 )
38 ds.show()
评价此篇文章
