BNU-FZH

fengzhenhua@outlook.com

申请百度翻译ID和KEY

由于zotero翻译插件的需要,如果使用免费的也很好用,但是翻译的速度和效果不是很好。于是决定今天尝试一下那些需要开通api的服务。由于自己本身就有百度帐号,所以直接使用百度帐号登录 翻译开放平台, 然后点击 个人开发者开通通用翻译API开发者信息右侧就可以看到申请的IDKey 了。此处可以参考 百度翻译Key申请教程

设置zotero翻译

打开zotero编辑首选项翻译翻译服务百度密钥 填入ID#Key → 配置完毕。

设置GoldenDict词典

经过百度得到一个Python脚本,为了方便使用,放在此处。

baidu.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#! /usr/bin/env python3
# vim:fenc=utf-8
#
# Copyright © 2023 feng <feng@archlinux>
#
# Distributed under terms of the MIT license.
import sys
import requests
import random
import json
from hashlib import md5

# 设置应用程序的 appid 和 appkey
appid = 'Your Baidu ID'
appkey = 'Your Baidu Key'

# 源语言和目标语言
from_lang = 'en'
to_lang = 'zh'

# API 相关参数
endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path

# 生成随机数作为 salt
def generate_salt():
return str(random.randint(32768, 65536))

# 计算签名
def calculate_sign(appid, source, salt, appkey):
sign_str = appid + source + salt + appkey
return md5(sign_str.encode('utf-8')).hexdigest()

# 发送翻译请求
def translate_text(source_text):
salt = generate_salt()
sign = calculate_sign(appid, source_text, salt, appkey)

headers = {'Content-Type': 'application/x-www-form-urlencoded'}
payload = {
'appid': appid,
'q': source_text,
'from': from_lang,
'to': to_lang,
'salt': salt,
'sign': sign
}

response = requests.post(url, params=payload, headers=headers)

if response.status_code == 200:
return response.text
else:
return None

# 提取翻译结果
def extract_translation(response_text):
try:
result = json.loads(response_text)
translations = result.get('trans_result', [])
if translations:
translation0 = translations[0]
return translation0.get('dst', '')
else:
return 'No translation result found.'
except json.JSONDecodeError:
return 'Failed to parse JSON response.'

if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python3 baidu.py <sentence>")
sys.exit(1)

source_text = sys.argv[1]
response_text = translate_text(source_text)
translation_text = extract_translation(response_text)
print(translation_text)

baidu.py放于GoldenDict的词曲存放目录,然后依次编辑词曲程序添加类型(纯文本)→名称(baidu) → 命令行

命令行
1
python3 /home/feng/.GoldenDict/baidu.py %GDWORD%

确认配置完毕

注意:在命令行中,必须使用绝对路径,否则不能正常使用。同时不要忘记给baidu.py赋上执行权限,即执行命令

1
sudo chmod +x /home/feng/.GoldenDict/baidu.py

在学习和工作中,需要编写程序,但是注释过多的话会影响速度,特别是对于科研工作而言 是一个很重要的参考! 对于一个脚本语言而言,其方便的地方是编程快速,但是其运行速度不如c等编译型语言,但是从整体来看,编写python之类的程序会更加方便。不写注释虽然可以提高运行速度,但是时间久了可能自己都读不懂程序在干什么及当时设计思路都无法回忆起来,更别谈及程序维护了。为了调和注释与可维护的矛盾,决定借用latex宏包的编写思路,使用dtx文件编写源码与说明文档二合一的文件,这样可以生成纯粹的无任何注释的脚本程序,同时也可以生成PDF格式的详细说明文档,不仅可以记录设计思路,还可以详细说明技术细节。

完成第一个 Python 脚本示例,实现了源码与注释的分离,使用 xetex 编译 timecristal.dtx 将获得 timecristal.py 无注释脚本程序,使用 xelatex 编译 timecristal.dtx 将会获得脚本的说明文档,详细的记录了各段代码的作用。

项目地址: https://gitlab.com/fengzhenhua/doc-python

阅读全文 »

cexam.sty是我开发的一款用来编写试题的宏包,2022年之前我是一名高中物理教师,所以在工作中不可避免的会遇到输入数学公式的问题,同时我也希望能够将自己多年的备课及解决的疑难问题记录下来,以备学生们在复习时或者刚开始学习物理的同学作为教材的补充使用.历经各种困难,最后找到了LaTeX,发现了这个举世无双的神奇软件.2016年自学了一年的宏包编写,成功解决了高中的物理数学试卷的排版问题。但是之前直接写的sty文件和cls文件,实现了选择、填空、计算等题型的自动排版,同时实现批量处理各种题型、实现数学与图片的排版、自动生成beamer文档、生成答题卡、教师与学生不同模式排版。但是后来发现,功能越多代码越复杂,很难维护,同时也少了一份使用说明,所以写本文档,有两个目的:

  • 方便代码的维护和升级;
  • 方便参考此说明使用它排版试卷。
  • 当前(2023-11-12 17:36)版本号v3.4.0
阅读全文 »

二年前写了一支用于分离Word版习题答案的VBA脚本,适用于MsOffice2007及以上版本,今天为了准备几份中学物理资料,想起来这个自动化的程序。源码发布于https://gitlab.com/fengzhenhua/separate-answers, 请安装最新的V27版,第一个方法是复制下述源码保存为分离答案V27.bas或从我的GITEE发布页下载后 导入到MsOffice2007 或以上版本即可以实现一键答案自动分离功能。

阅读全文 »

考虑到以后要编写大量代码,决定使用文学编程写出具体的编程思路和使用文档,但是在测试之前写的cexam.dtx文件时,发现已经不能正常编译,原因在于我长时间没有更新代码,而LaTeX3已经更新了很多了,其中一些命令改变了定义,所以之前的文档需要更新,但是考虑到时间关系暂时不去更新cexam.dtx,在试图解决问题的过程中发现有一个神奇的宏包pythontex可以在LaTeX文档中插入Python代码还可以插入运行后的结果,由于没有深入研究,暂时将其README.md放于此处,留待研究。

https://githbu.com/gpoore/pythontex

阅读全文 »

相信大家应该经常看到 npm 和 pip 两个术语,我也经常看到,pip 经常用,但是 npm 只是眼熟,没仔细了解过,今天了解 typescript 的时候又看到了,所以特地对比了一下 pip 和 npm 两个,查阅相关资料和博客后,发现 npm 和 pip 简直出奇的像,功能非常类似,都是负责各自领域的工具包的安装和下载,只不过 npm 服务于 Node.js,pip 服务于 Python。甚至可以共用一套相同的文字介绍框架,仅仅是替换了少数术语名词。

阅读全文 »

diary.sh脚本已经比较完善了,但是还有一个功能就是主题升级,由于本博客对Next主题做了比较深入的定制,改变了基本配色,所以若直接升级Next主题,又需要重新配置一遍,这很浪费时间。但是,如果不对主题升级,那对于性能的改进和错误的修复及新功能的增加都不能享受,所以综合考虑后,在diary.sh脚本中增加了主题升级这一功能,使用脚本自动修改对应主题的配置,这样既可以保证主题最新,又可以保证快速的使用定制版的主题。

diary.sh升级代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ThemeNextColor=#006600
ThemeUpdate(){
rm -rf $DIARYPATH/themes/next
git clone https://gitlab.com/hexo-theme-next/hexo-theme-next.git $DIARYPATH/themes/next
cd $DIARYPATH/themes/next
git checkout $(git describe --tags $(git rev-list --tags --max-count=1))
sed -i "s/^\$black-deep.*$/\$black-deep = "$ThemeNextColor"/g" $DIARYPATH/themes/next/source/css/_variables/base.styl
sed -i "s/#222/"$ThemeNextColor"/g" $DIARYPATH/_config.next.yml
echo "\$content-desktop = 900px;" >> $DIARYPATH/themes/next/source/css/_variables/Muse.styl
echo "\$content-desktop-large = 1200px;" >> $DIARYPATH/themes/next/source/css/_variables/Muse.styl
sed -i "s/background: var(--btn-default-bg);//g" $DIARYPATH/themes/next/source/css/_schemes/Muse/_header.styl
cd $DIARYPATH
hexo g
cd $NOWPATH
echo "The next theme of hexo has been updated, happy diary !!"
}

2023年11月09日, 开始正式将mupdf作为与nvimvim配合编写LaTeX的预览pdf阅读器。常用命令列表如下

快捷键 功能
f 全屏
W 适应宽度
H 适应高度
翻到上页页尾
. 翻到下页页首
b 翻到上页同一位置
空格 翻到下页同一位置
鼠标左键 当手形工具可以自动翻到上一页或下一页,可以点链接
鼠标滚轮 上下滚屏
鼠标滚轮+Shift 左右滚屏
鼠标滚轮+Ctrl 缩放
阅读全文 »

由于编写LaTeX的需要,一些特殊的功能需要相应的宏包支持,但是时间一长就会遗忘,因些开此篇博客专门记录一些日常使用到的宏包,并简单注明功能。具体使用规则,请使用TexLive自带的查询命令:texdoc packagename 查询相应的说明文档。

阅读全文 »

近期在解决一组微分方程的问题,所以需要使用Python 编程。首先介绍一下编程的相同原理:

任何程序都有一些已经编译好的,完成通用功能的部分,也就是说当你解决问题时要实现某些功能,这些功能已经内置于现有语言中,不需要作者再独立编写。比如在LaTeX中在导言引入宏包, 这些宏包定义了一些命令,不需要作者再自己定义了。Python中引入一些, 这里的库和LaTeX中的宏包本质上是同一个东西,就是一些已经实现了的功能模块,将其加入到所写的程序中即可。对于高级玩家,还可以添加自己定义的一些特殊需求的模块,几乎所有的语言都是这个模式。

阅读全文 »