Wacom的配置和使用
今天网购的数位板Wacom PTK670 收到了,做工相当精制,铝合金机身,超薄设计,厚度仅有4mm, 使用体验了一下,相当好用。我的电脑装配的是 ArchLinux 系统,而 Linux 内核默认是包含 Wacom 驱动的,这也构成了我选择 Wacom 的理由,同时在使用 Gnome+wayland 的组合中不需要任何设置就能完美运行。
ArchLinux 的设置
安装支持手写的软件
xournall++和Openboard1
sudo pacman -S xournalpp openboard
配置快捷键,支持更高效的工作。Wacom PTK670 左右各有一个滚轮和四个方向键,根据操作的频繁程度,我规划了自定义键:
- 打开设置:设置→ 数位板→自定义功能
- 左侧:转轮逆时针向上,顺时针向下, 上键对应
PgUp, 下键PgDn, 左键Ctrl Z撤销,右键Ctrl y, - 右侧:转轮逆时针缩小,顺时针放大,
上键对应
Ctrl+Shift+Delte删除当前页, 下键Ctrl+D新增一页, 左键保留,右键保留.
设置触控笔
- 压力感应设置,启动
xournalpp, 然后依次点击:编辑→触控笔→最小压力0.01→压力增强4.00. - 触控笔按钮:按钮1
手形工具, 按钮2高亮, 按钮3橡皮.
目前暂做上述设定,在使用中再逐步改善。
书定文件转打印体
将书写的内容复制图片,粘贴到通义千问或DeepSeek中,让Ai帮助识别成打印体,实验的结果是只要字不是非常草,文字和公式都能正确识别,然后让Ai以LaTeX源格式输出,只需复制粘贴到LaTeX文件中即可实现编译成PDF文档。这个方法对于大规模的写解答题的答案等是相当可高效的。
ArchLinux使用PcamanHooks解决GDM恢复默认的问题
ArchLinux 是我的主力办公系统,我配置了完整的 WhiteSur
主题,当然也细致到了使用 WhiteSur 的 GDM 主题。但是我发现有时候系统使用
Pacman 升级后 GDM 主题会恢复到默认状态,其根源在于 GDM (GNOME
显示管理器)的主题是通过直接替换系统文件/usr/share/gnome-shell/gnome-shell-theme.gresource
来实现的。当gnome-shell
软件包升级时,这个文件会被包管理器自动恢复为默认版本,所以美化的登录界面就消失了。
永久解决这个问题的核心思路是让系统在每次gnome-shell更新后,自动重新应用一次WhiteSur主题。在ArchLinux上,最优雅的方式就是使用Pacman钩子(hook),
具体步骤为:
创建钩子文件:使用
root权限在/usr/share/libalpm/hooks/目录下创建一个新的钩子文件,例如命名为reapply-whitesur-gdm.hook, 如果你按装了nvim则执行1
sudo nvim /usr/share/libalpm/hooks/reapply-whitesur-gdm.hook
编写钩子内容:
1
2
3
4
5
6
7
8
9[Trigger]
Operation = Upgrade
Type = Package
Target = gnome-shell
[Action]
Description = Reapplying WhiteSur GDM theme after gnome-shell upgrade...
When = PostTransaction
Exec = /bin/sh -c 'cd /路径/你的/WhiteSur-gtk-theme && sudo ./tweaks.sh -g'[Trigger]部分:定义了钩子的触发条件, 即gnome-shell或gdm包升级(Upgrade)后触发。[Action]部分:定义了要执行的动作。Exec: 最关键的一行。它需要指定一个完整的shell命令来重新应用主题。
原理验证:保存文件后,这个钩子就生效了。下一次当你运行
sudo pacman -Syu并且更新列表里包含gnome-shell或gdm时,你会在升级输出中看到你设置的Description文字,随后主题会被自动重新应用。升级完成后,你的GDM登录界面将保持为WhiteSur 主题,再也不会被重置了。
ArchLinux安装兄弟DCP7180DN打印机
近期更换了办公室,所以需要安装该办公室的打印机兄弟DCP7180DN打印机,但是我的ArchLinux 上没有相应的驱动,所以需要安装。
安装打印机配置程序
安装system-config-printer, 打开终端运行命令
1 | sudo pacman -S system-config-printer |
安装brother-dcp7180dn驱动
- 使用
paru检索驱动1
paru -Ss brother |grep 7180
- 确定驱动的全称
brother-dcp7180dn, 执行安装1
paru -S brother-dcp7180dn
配置打印机
在菜单中找到
打印机设置→解锁→添加→网络打印机.选择局域网内的打印机,此时输入打印机的
IP和使用默认端口9100, 同时下方显示连接AppSocket/HP JetDirect, 点击转发, 然后等待搜索驱动.由于已经安装了
brother-dcp7180dn驱动,所以点击确定后就可以使用了。
参考文章
Linux中的排序命令sort
在给学生上完课后,我需要将希沃白板的板书保存下来,合成为一个 PDF
文件,发送给学生,以便学生能够及时复习。但是,在板书超过10页后,发现直接使用
magick 命令合成,那第
10页会跑到第1页前面,于是我修改文件名后完成了操作。但是这也太麻烦了,于是决定编写一个脚本自动处理合成任务,其中的关键是根据
seewo
白板按时间加页码命名的默认方式进行排序。为了完成正确的排序,需要借助sort
命令。
sort 命令简介
| 排序需求 | 命令示例 | 说明 |
|---|---|---|
| 默认字典序(ASCII顺序) | ls \| sort |
最基本排序,大写字母(A-Z)排在小写字母(a-z)之前。 |
| 智能版本序(含数字时推荐) | ls \| sort -V |
能识别数字并按数值大小排,将 1, 2, 10 排成 1, 2, 10(而不是 1, 10, 2)。 |
| 忽略大小写 | ls \| sort -f |
将 a.png 和 B.png 视为相同字母排序。 |
| 按修改时间(时间倒序) | ls -t |
注意:这是 ls 命令的参数 (-t),不是 sort 的功能。 |
| 反转排序结果 | ls \| sort -r |
-r 参数可与其他参数组合,如 sort -Vr 为版本序反转。 |
核心用法
sort 通常不直接操作文件,而是对它接收到的文本输入流进行排序。因此,你需要先用 ls、find 或 echo 生成文件列表,再通过管道 | 传给 sort。
图片合成 pdf 命令
1 | magick $(ls *.png | sort -V) output.pdf |
进阶技巧
如果你想获得类似文件管理器那种“按名称排序,但文件夹在前”的列表,可以结合 ls 和 sort:
1 | ls -la | sort -k 9 # 按第9列(默认文件名列)排序 |
注:这种方法比较脆弱,因为 ls -l 的输出格式固定,列位置可能因系统而异。
Linux与Windows双系统重启导致无线网消失的解决方案
近期重新安装了双系统中的Windows11,
但是发现重启后Linux的无线网居然消失了。使用命令 rfkill list
排查,发现 Hard blocked: yes 且
Soft blocked: yes,
这表明驱动层面是没有问题的。导致ArchLinux中无线网消失的根本原因通常是
Windows的“快速启动”功能改变了硬件的电源状态,导致Arch
Linux无法正确识别或重置无线网卡.
解决方案
禁用Windows快速启动可以根治切换操作系统时导致的无线网消失问题,具体操作如下:
在Windows系统中,进入“控制面板” → “硬件和声音” → “电源选项” → “选择电源按钮的功能”。点击“更改当前不可用的设置”,然后将 “启用快速启动(推荐)” 前面的勾选
取消。保存修改,然后正常重启进入 ArchLinux 再测试。
为什么是Windows的锅?
Windows的“快速启动”(混合睡眠)在关机时会将系统状态(包括一些硬件状态)保存到硬盘。当你在这种“伪关机”后启动Arch时,硬件可能还处于Windows设定的某种低功耗或禁用状态,而Linux内核无法完全重置它。
LaTeX编写宏包时的选项创建
编写LaTeX宏包实现适合自己工作的特殊功能是一项极其重要的工作,在创建宏包时使用LaTeX2e语法和LaTeX3语法的风格并不相同,本文介绍两种语法。
LaTeX2e 语法创建宏包选项
1 | \NeedsTeXFormat{LaTeX2e} |
LaTeX3 语法创建宏包选项
使用 l3keys 模块
1 | \RequirePackage{expl3} |
复杂键的定义
1 | \keys_define:nn { mypackage } |
混合使用两种语法
1 | \RequirePackage{expl3} |
注意:混合使用时需要调用expl3宏包,即
1 | % 在导言区加载 expl3 |
说明
两种语法都可以有效处理宏包选项,选择哪种取决于项目需求和个人偏好。LaTeX3 语法提供了更现代、更安全的编程范式,特别适合复杂的配置系统。
Thunderbird配置Outlook邮箱
最近在一台新电脑上使用Thunderbird配置Outlook邮箱,明明密码都是正确的,但是就无法登录成功。因为 Thunderbird 自动设置 Outlook 邮箱时尝试使用 Exchange 或应用程序密码登录, 而Microsoft 阻止 Exchange 的基本身份验证和应用程序密码,Thunderbird 的 Exchange 选项对于 Outlook 来说并不可靠。修复方法是使用 OAuth2 在 Thunderbird 中使用 IMAP 和 SMTP 设置帐户,以便 Microsoft 登录页面在 Thunderbird 中打开。
删除 Thunderbird 中配置失败的帐户。添加新的邮件帐户并输入您的 Outlook 地址。当 Thunderbird 提供设置时,打开手动设置配置并确保:
- 传入是
IMAP,服务器outlook.office365.com、端口993、SSL/TLS身份验证设置为 OAuth2,用户名是您的完整电子邮件。 - 传出是带有服务器
smtp.office365.com、端口587、STARTTLS身份验证OAuth2、用户名的SMTP是您的完整电子邮件。
此时应该会出现一个 Microsoft 登录窗口。登录并完成 MFA。接受 Thunderbird 的权限。邮件将开始同步。
如果 Thunderbird 仍然要求输入密码而不是显示 Microsoft Web 登录,请打开帐户设置>服务器设置和传出服务器。将两者的身份验证方法更改为 OAuth2 。然后前往“设置”>“隐私和安全”>“已保存的密码”并删除 或 的所有存储条目 outlook.office365.com smtp.office365.com,关闭对话框,然后重试,以便出现 OAuth 窗口。
如果你的帐户是工作或学校 Microsoft 365 邮箱,并且显示 OAuth 窗口,但登录被拒绝,请要求租户管理员为邮箱启用 IMAP 和 SMTP 身份验证,然后重复这些步骤。
LaTeX中的硬空格
LaTeX 中 ~ 符号的含义
在 LaTeX 中,~
符号表示一个不可断行的空格(non-breaking
space),也称为硬空格。
主要功能
1. 禁止换行
- 使用
~连接的两个单词或元素不会被分开在两行 - 示例:
Prof.~Smith会确保 "Prof." 和 "Smith" 始终在同一行显示
2. 与普通空格的区别
| 类型 | 是否可断行 | 示例 |
|---|---|---|
| 普通空格 | 可断行 | Mr. Smith 可能换行为 "Mr." 和 "Smith" |
~ 空格 |
不可断行 | Mr.~Smith 强制 "Mr. Smith" 在同一行 |
常见使用场景
人名与头衔
1 | Dr.~White, Prof.~Anderson |
图表编号引用
1 | Fig.~\ref{fig:example}, Table~\ref{tab:data} |
章节和公式的引用
1 | Chapter~\ref{chap:intro}, Section~\ref{sec:method}, Eq.~(\ref{eq:1}) |
固定搭配单词
1 | pH~value, Apple~Inc., 100~km/h |
注意事项
- 在 LaTeX
源码中,
~会渲染为一人空格,但禁止在此处换行 - 数学模式中
$a~b$也会产生空格,但是要注意与相似符号$\sim$的区别 ~是LaTeX中用于保持内容连贯、防止意外换行我重要符号。同时,expl3会自动去除代码中的空格,但是这导致了在expl3中使用source2e中的代码时,如果其中含有空格,就需要使用~取代,这样可以保证代码正常运行。
expl3语法与tikz冲突的解决
最近计划使用source3的原生命令编写一个答题卡宏包,目标是实现高考答题卡的仿真,用于中学生日常测试的规范答题中。但是,在绘制圆角矩形时,由于借助了tikz宏包,这导致了系统报错,报错的代码是
1 | \begin{tikzpicture} |
当我去掉圆角括号rounded corners后发现可以正常工作,但是追加上这人括号后系统再次报错。经过研究发现,主要是rounded corners中包含了一个空格,这会导致问题的产生,因为在expl3语法中,空格会被忽略,而在tikz中空格被解释为参数分隔符,这导致了tikz实际获得的是roundedcorners,
于是错误出现了。而~是不可忽略的空格,于是切换成rounded~corners后问题立刻解决。这是expl3与tikz集成时的一个隐蔽陷阱,所以本文的方案为解决这一问题提供了最佳实践。
1 | \begin{tikzpicture} |