您的位置:首页 > 文旅 > 美景 > 最近国内重大新闻_室内设计网站哪些号_海外网站seo优化_南宁网络推广品牌

最近国内重大新闻_室内设计网站哪些号_海外网站seo优化_南宁网络推广品牌

2025/4/18 16:02:05 来源:https://blog.csdn.net/ldc1513/article/details/145887345  浏览:    关键词:最近国内重大新闻_室内设计网站哪些号_海外网站seo优化_南宁网络推广品牌
最近国内重大新闻_室内设计网站哪些号_海外网站seo优化_南宁网络推广品牌

众所周知,各种LLM使用的markdown格式和笔记软件的存在一些区别。其中最让人头疼的就是用括号和方括号的latex环境。笔者用alfred实现了一个workflow,实现了格式规范化。

期望功能:选中给定文本后,在alfred中输入"remove" keyword,即可将该文本里面的"\ (, \ )“和”\ [,\ ]“替换为”$“和”$$". 额外附加了一个去除多个空行的功能。

细节:使用python实现格式规范化,但是用applescript调用剪贴板。中间利用文件传递信息,因为基于文本传输会有各种转义的奇奇怪怪的问题(比如说在bash里面echo会自动转义"\t"等特殊字符,但是在latex里面显然"\text"之类的东西会用到,所以必须要用printf %s )。

实现:

  1. 在alfred里面创建keyword块:用keyword remove唤起,设置为no argument
  2. 在某个固定的地方新建一个python文件“markdown_processor.py”和一个txt文件“string_storage.txt”。打开python文件,输入下面的代码:
import redef process_string(input_str):# 处理连续的空行lines = input_str.split('\n')processed_lines = []prev_empty = Falsefor line in lines:current_empty = (line.strip() == '')if current_empty:if not prev_empty:processed_lines.append('')prev_empty = Trueelse:processed_lines.append(line)prev_empty = False# 重新组合处理后的文本processed = '\n'.join(processed_lines)# 处理符号替换processed = re.sub(r'\\([\[\]()])',lambda m: '$$' if m.group(1) in ['[', ']'] else '$',processed)return processedif __name__ == '__main__':location='string_storage.txt'# 读取时保留所有特殊字符with open(location, 'r', encoding='utf-8') as f:data = f.read()  # 保留原始内容包括\t等符号processed_data = process_string(data)# 写入时保持原有编码和格式with open(location, 'w', encoding='utf-8', newline='') as f:f.write(processed_data)  # 禁止自动转换换行符
  1. 把这个块链接到一个applescript块,然后输入下面的applescript代码,把其中的xxx改成刚才保存python文件的路径
on runtell application "System Events" to keystroke "c" using command downdelay 0.1-- 获取剪贴板内容(保留原始格式)set clipText to getClipboard()-- 定义文件路径set storagePath to quoted form of "xxx/string_storage.txt"set pyScriptPath to quoted form of "xxx/markdown_processor.py"try-- 安全写入文件(禁用转义解释)do shell script "printf %s " & quoted form of clipText & " > " & storagePath-- 执行Python处理do shell script "/usr/bin/python3 " & pyScriptPath-- 读取处理结果set processedText to do shell script "cat " & storagePath & " | LC_ALL=C tr -d '\r'"-- 写回剪贴板(保留原始转义符)set the clipboard to processedTexttell application "System Events" to keystroke "v" using command downon error errMsgdisplay dialog "处理失败:" & errMsg buttons {"OK"} default button 1end tryend run-- 安全获取剪贴板内容的函数
on getClipboard()tryreturn (the clipboard as «class utf8») as texton errorreturn ""end try
end getClipboard

然后测试一下即可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com