LaTeX文档分章节引入参考文献
在使用LaTeX编辑文档时,可以方便地插入参考文献,推荐使用bibtex插件,我在文章
LaTeX
插入参考文献中详细介绍了这种方法。最近阅读一些书籍时,注意到有些书籍在每章或每节的末尾插入了参考文献,这对于编写大型教学资料非常有帮助。本文将介绍如何在章节末尾插入参考文献。
bib 文献库
在编写资料时,可以根据文献的分类分别建立不同的文献库,例如编写一本物理资料时,可以分别建立li.bib、dian.bib、re.bib等文件。例如:
li.bib文件的内容如下
1 | @book{zhou2009, |
文献的引用
在正文需要引用的地方使用\cite{键名}。
例如推荐刘川的书时写:
1 | 推荐刘川的《理论力学》\cite{liu2019}作为入门教材。 |
文档末列出被引用过的文献
使用传统的 BibTeX 方式
在文档末尾(\end{document})加入两行:
1 | \bibliographystyle{plain} % 或unsrt, ieeetr 等样式 |
其中plain是基础样式,按作者字母排序、数字标号。如果你希望参考文献按引用先后顺序排列,把样式换成unsrt即可。
使用现代的 BibLaTeX 方式
只需要在导言为每个文献库单独调用一次\addbibresource命令,即
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
在正文中的任何位置都可以使用命令\printbibliography插入引用过的条目,biblatex默认只打印在正文中被\cite系列命令引用过的条目。如果某个文献在.bib文件中但未被引用,它不会出现在目录中。
\printbibliography支持在方括号[]内添加参数,以控制目录的标题、内容和格式。具体定制选项如下:
自定义标题,可以使用
title选项修改:1
2
3\printbibliography[title={参考文献}]
% 或英文标题
\printbibliography[title={Reference list}] %[reference:2]将目录添加到目录,如果希望“参考文献”作为一个章节出现在目录中,使用
heading=bibinto:1
\printbibliography[heading=bibintoc, title={参考文献}] %[reference:3]
按类型或关键词过滤条目,可以生成分类文献列表。
1
2
3
4
5
6
7
8% 只列出文章(@article)类型的文献
\printbibliography[type=article, title={期刊论文}] %[reference:4]
% 只列出在 .bib 文件中标记了 keyword={primary} 的文献
\printbibliography[keyword=primary, title={核心文献}] %[reference:5]
% 排除某一类文献,例如排除网络来源(@online)
\printbibliography[nottype=online, title={非网络文献}] %[reference:6]
每节末列出参考文献
列出正文中引用过的条目
- 方式一:全局加载,按节引用(最简单)
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
- 方式二:为
refsection指定专属bib(更严格, 推荐使用)
如果你希望“力学这一节只能引用 li.bib
里的书,电学只能引用 dian.bib 里的书”,可以给
refsection 环境加上可选参数,直接指定该节使用的文献源:
1 | \begin{refsection}[li.bib] |
这个写法在 biblatex
文档和多个教程中被明确支持。它的优点是各节文献源完全隔离,不会互相污染;缺点是如果某一节需要同时引用两个库里的书,写起来会稍麻烦(需要把两个库都列进去,或改回方式一)。
列出所有文献库中的文献
使用\nocite{*}
放在refsection环境内部,将它的作用范围被限制在当前节,意思是将所有文献库中的文献都标记为引用过,虽然没有引用过。写法如下:
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
每章末列出参考文献
导言区设置
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
正文写法
1 | \begin{refsection} |
编译
传统 bibtex
1 | xelatex foo.tex |
现代 biblatex
先安装biber命令,在
ArchLinux中执行命令:
1 | sudo pacman -S biber |
编译流程
1 | xelatex foo.tex |
Fcitx5配置问题
随着Fcitx5的升级,它的功能不断完善,根据 Fcitx5 ArchWiki
的记录,我的
Gnome Wayland环境(其他桌面环境请参考前述Fcitx5
ArchWiki)需要做出如下设置:
- 修改整体环境变量
/etc/environment, 去掉GTK_IM_MODULE=fcitx, 但是务必保留XMODIFIERS=@im=fcitx和QT_IM_MODULE=fcitx, 于是我的environment文件为:
1 | # This file is parsed by pam_env module |
- 为支持运动于
Xwayland的GTK软件,在~/.config/gtk-3.0/settings.ini和~/.config/gtk-4.0/settings.ini中添加:
1 | [Settings] |
Gnome Wayland输入框精准定位
由于Gnome的工作原理,使得Fcitx5暂时不能完成在一些程序中的输入框精准定位和无法在gnome-shell UI上显示候选窗口,则需要安装插件gnome-shell-extension-kimpanel-git,
即
1 | paru -S gnome-shell-extension-kimpanel-git |
Hexo的Next主题升级问题
2026年10月25日我决定升级一下我的 Next
主题,因为2026年的更新一直没有做,有些性能改善和bug修复肯定有不少,并且版本号从
NexT 8.21.0 一路升级到了 NexT 8.29.0, 但是在 8.22.0
的 Bug Fixes 部分记录了一项改动
1 | Use auto-fill in link-grid |
这个操作的逻辑是根据浏览器的缩放程度自动判断link-grid的列数,但是对于我的博客来讲,我希望维持原来的两列。于是使用diary -tu升级主题后,进一步修改themes/source/css/_common/scaffolding/tags/link-grid.styl
文件中
1 | grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); |
为
1 | grid-template-columns: 1fr 1fr; |
完成上述修改后,依次执行:
1 | diary -tu |
[!WARNING] 由于
hexo-renderer-pandoc插件内部硬编码了--mathjax, 而当前Pandoc 3.11中已经标记--mathjax为Deprecated,所以编译时会出现警告提示。这个问题等下次升级Pandoc后或许将变的不可执行,所以需要等hexo-renderer-pandoc升级后解决,这点需要特别注意。
淄博实验中学第43届物理竞赛复赛取得佳绩
2026年9月19日,第43届全国中学生物理竞赛在山东大学中心校区举行,近日竞赛成绩已公布。淄博市在此次竞赛中表现优异,共有3人获得一等奖,24人获得二等奖,20人获得三等奖。其中,淄博实验中学的高二学生孔令旭和丁信嘉,以及桓台一中高三学生田真旭荣获全国一等奖。冯振华和曹子明两位老师荣获“山东省物理竞赛优秀指导教师”称号,淄博实验中学和桓台一中则被授予 “金牌学校”称号。
复赛进入考场前师生合影留念
入场前冯教练进行考前动员
省一等奖获得者孔令旭、丁信嘉与冯振华老师合影
考后复盘
第43届全国中学生物理竞赛淄博实验中学成绩
- 省一等奖:孔令旭(高二)、丁信嘉(高二)
- 省二等奖:陈淇威(高二)、宋锦尧(高二)、张汝森(高二)、王泽畅(高二)、张浩宇(高一)、蔺昕泽(高一)
- 省三等奖:石旭冬(高一)、蔡郑锦晖(高二)、乐轩羽(高一)
令人欣喜的是,本届全国中学生物理竞赛中,实验中学参赛的选手全部为高一和高二的学生,没有高三学生参赛。与此同时,其他学校获得省一等奖的多为高三学生,因此高二的两位同学荣获省一等奖尤为难得,特此表示祝贺!去年,淄博实验中学进入复赛的高三学生有6人,高二学生只有2人,而今年高二学生有8人进入复赛,高一学生也有4人进入复赛。这样的佳绩离不开同学们的辛勤付出和努力,祝愿学生们在未来不断突破自我,取得更加辉煌的成就。
从Gnome3过渡到Cosmic桌面环境
众所周知 Gnome
桌面环境非常成熟,但是每次大版本升级都会导致大量的插件失效,如果等足够长的时间再更新则不能保证系统处理最新状态,如果不等则无法正常工作,不同的插件需要等的时间也不一样。基于上述考虑,我决定从
Gnome3 切换到 Cosmic 桌面环境,其优点是
Cosmic 从零开始使用 rust
语言创建,所以其安全性高、速度快。但是, Cosmic
是一款可以工作中使用,然而还在发展中的新系统,所以就有了本文,本文的目的是记录从使用到完善过程中的问题。
删除 Gnome 切换到 Cosmic
- 启用
Cosmic显示管理器cosmic-greeter
1 | sudo systemctl enable cosmic-greeter |
cosmic-files和Gnome都需要gvfs, 所以需要保留gvfs, 只删除Gnome, 最安全的方法是在删除列表中排除 gvfs, 即
1 | sudo pacman -Rns gnome gnome-shell gnome-browser-connector gnome-shell-extension-blur-my-shell obs-gnome-screencast --assume-installed gvfs |
- 后续清理
1 | sudo pacman -Rns $(pacman -Qtdq) |
- 停用并禁用
GDM
1 | sudo systemctl disable --now gdm.service |
移除WhiteSur主题
- 切换到
WhiteSur源目录
1 | git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git |
移除
GTK主题:./install.sh -r移除
GDM登录主题:sudo ./tweak.sh -g -r移除
Libadwaita主题:./install.sh -l -r移除
Firefox主题:./tweak.sh -f -r, 需要选关闭Firefox再执行这条命令。手动删除残留文件:
1 | # 删除系统级残留(需要管理员权限) |
多媒体
尽管Cosmic中也有默认的音乐播放器和视频播放器,但是仍然不好用,于是需要安装简洁、轻量级的音乐播放器Amberol和视频播放器Celluloid,
执行命令
1 | sudo pacman -S amberol celluloid |
设置截屏快捷键
打开
Cosmic设置进入
输入设备(Input Devices)→键盘(Keyboard)点击
查看和自定义快捷键(View and customize shortcuts)在列表中找到
系统快捷键类别,然后在右侧列表向下滚动找到截图(Take a screensh)选项。进入
截图后,选中添加另一个快捷键。按下
F7, 则使用F7打开截图设置完毕。
Cosmic 主题
打开网站Cosmic Themes,
选中合适的主题下载到你想要的目录。然后点击设置→外观→导入,选中下载的主题,则主题设置完毕。
问题汇总
每次开机密钥环总是要求输密码
cosmic-greeter基于greetd,
其PAM
配置文件通常是/etc/pam.d/cosmic-greeter。不过,根据Arch Wiki的讨论,其打包配置有时会复用/etc/pam.d/login这个文件。
因此,为了确保生效,需要同时检查并编辑这两个文件。
- 检查两个文件:
1 | ls -l /etc/pam.d/cosmic-greeter /etc/pam.d/login |
[!WARNING] 如果
/etc/pam.d/cosmic-greeter不存在,可以参照其他显示管理器的做法,创建一个指向login的符号链接,或直接编辑/etc/pam.d/login。
- 编辑
PAM文件以集成gnome-keyring: 向上一步确定的PAM(两个), 中添加pam_gnome_kerying.so模块。在login和cosmic-greeter文件中添加以下两行内容:
- 在
auth部分的末尾添加:
1 | auth optional pam_gnome_kerying.so |
- 在
session部分的末尾添加:
1 | session optional pam_gnome_kerying.so auto_start |
[!WARNING] 注意: 添加时请保持文件原有结构,将新行插入到对应区块的末尾。一个配置好的文件示例片段如下:
1 | #%PAM-1.0 |
[!WARNING] 自动解锁成功的关键:登录系统使用的密码,必须和“登录”密钥环(Login Kerying)的密码完全一致。如果不一致,则需要使用
seahorse工具手动修改密钥环的密码,使之与登录密码匹配。事实上我仅修改了login文件,测试成功了。同时,Cosmic桌面环境正在开发自己的原生密钥环服务oo7, 待其成熟后也可以迁移到oo7提供的pam_oo7.so模块用于自动解锁。
文件管理器不显示移动硬盘
这个问题主要是由于原来系统安装的是Gnome3,
当删除Gnome3后也把cosmic-file依赖的gvfs,udisks2和gvfs-mtp卸载了,于是安装这三个命令后问题解决:
1 | sudo pacman -S gvfs gvfs-mtp udisks2 |
系统没有移除U盘选项
这主要是因为cosmic-file当前不支持该功能,但可以使用专门用于管理驱动的小程序cosmic-ext-applet-drives-git来解决这个问题。
1 | paru -S cosmic-ext-applet-drives-git |
由于此小程序依赖于 libcosmic,但我使用
git@github.com 配置的 SSH
帐号执行上述命令时未成功。因此,我将 ~/.gitconfig 文件中与
https://github.com 相关的 SSH 命令注释掉,直接使用
https 协议进行下载。
Guake终端下Fcitx5输入面板4k显示器下过小的问题
打开
Fcitx5配置切换到
附加组件切换到
经典用户界面所有字体设置为
15勾选
在X11上针对不同屏幕使用单独的DPI固定 Wayland 的字体 DPI 为
192不勾选
在Wayland下启用分数缩放点
确定, 然后找到Fcitx5在状态栏中的图标,右键,重新启动Fcitx5.
参考资料
Windows10LTSC2021输入法对话框消失的解决方案
今天决定把我的 Thinkpad T490 的双系统改为单一的
Windows10LTSC2021, 原因是我的台式机已经配置了
ArchLinux + Windows11 双系统,平时的办公主力为
ArchLinux , 如果笔记本使用 Windows10LTSC2021,
则在 Windows
下的工作直接使用笔记本办公即可。但是,在安装完成
Windows10LTSC2021 后发现输入法的候选框不显示,这是
Windows10LTSC2021 的一个已知的 Bug,
其根本原因在于,微软在精简这个版本时,不小心删除了新版自由软件拼音输入法所依赖的
桌面桥运动时(Desktop Bridge Runtime)
组件。因为缺少必要的运行库,所以输入法就无法正常显示候选框。
方案一:切换到旧版输入法
这是最快捷的临时解决方案,能让输入法立刻恢复正常,操作步骤为:
- 在任务栏右下角右键点击“中/英”输入法图标,选择
设置 - 在设置窗口中点击
常规 - 找到
兼容性部分,打开使用以前版本的微软拼音输入法开关。
方案二:安装缺失的依赖库(更彻底)
这是从根源上解决问题的方法,并且已经被广泛验证有效。其步骤为:
- 下载文件:依赖库文件
Microsoft.VCLibshttps://dl.lancdn.com/landian/soft/vclibs - 解压文件:将下载的压缩包解压,你会得到两个
.Appx格式的文件。 - 放置文件:将这两个
.Appx文件复制到C:盘的目录下。 - 安装文件:
- 右键点击
开始菜单,选择Windows PowerShell(管理员)或终端(管理员) - 在打开的窗口中,根据你的系统类型,输入以下命令并回车
- 64位系统
PowerShell 1
Add-AppxPackage -Path "C:\Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe.Appx"
- 32位系统
PowerShell 1
Add-AppxPackage -Path "C:\Microsoft.VCLibs.140.00_14.0.30704.0_x86__8wekyb3d8bbwe.Appx"
- 64位系统
- 右键点击
- 重启电脑:命令执行成功后,重启电脑即可生效。
[!WARNING] 如果提示“部署失败”或“资源正在使用中”,可以重启电脑后再试一次。
稀沃白板讲义合成PDF
当前稀沃白板在中学普及度很高,教师每天都要讲课并书写板书,将每个阶段的讲义合成为一个PDF文件发给学生是一个非常有意义的工作。为实现此目的我编写了在Linux下合成PDF的Shell脚本seewo.sh,
其源码为
1 | #! /bin/sh |
[!WARNING] 私有函数库
Share_Fun_KeySudo与Share_Fun_Install可以到fungzhenhua/script下载,如果不安装则注释掉source的两行及GIT_DEPEND行,同时自行安装好imagemagick即可。
提取Word中的高清图片
直接复制Word中的图片可能会因为剪贴板格式转换或Word默认的压缩机制导致画质下降和背景丢失。
docx 文档提取高清图片
为了提取无损且高清的原图,可以将.docx文件修改为.zip后解压。这种方法能够确保图像不失真。这是因为现代的
.docx
文件本质上是一个包含多种资源(包括原始图片)的压缩包。通过解压,可以直接获取未经任何处理的原始高清图片。
操作步骤:
- 备份文档:建议先复制一份需要提取图片的
Word文档。 - 更改后缀名:将文档的后缀名从
.docx改为.zip(如果看不到后缀名,需在文件夹选项中开启“显示文件扩展名”)。 - 解压文件:使用解压缩软件(如
7-Zip、WinRAR等)打开或解压该ZIP文件。 - 提取图片:在解压出的文件夹中,依次进入
word→media目录。这里存放了文档中所有的原始图片,您可以直接将它们复制出来。 - 注:此方法仅适用于
.docx格式,不适用于老旧的.doc格式。
doc 文档提取高清图片
由于老旧的 .doc 格式并非基于 XML
的压缩包结构,因此无法直接使用“修改后缀为
ZIP”的方法。一种最简便的方法是使用MsOffice将.doc文档转换为.docx文档,然后再修改后缀为.zip,
使用解压缩软件解压缩。另一种方法是另存为网页,这是最古老且最可靠的方法,能够很好的保留图片的原始画质。
操作步骤:
- 用
Word打开需要提取图片的.doc文档。 - 点击左上角的“文件” → “另存为”。
- 选择好保存位置,在 “保存类型” 下拉菜单中,选择 “网页
(
*.htm;*.html)”(注意:请勿选择 “单个文件网页”),然后点击保存。 - 保存后,系统会在同目录下自动生成一个名为
“
[文档名]_files” 的文件夹。打开该文件夹,里面就整齐排列着文档中的所有原始高清图片。
解决Neovim打开自身配置文件时的报错问题
问题描述
今天使用 Neovim 打开它自己的配置文件时,出现报错信息
1 | LSP[lua_ls] Your workspace is set to `/home/foobar`. Lua language server refused to load this directory. Please check your configuration.[learn more here](https://luals.github.io/wiki/faq#why-is-the-server-scanning-the-wrong-folder) |
这个错误信息的意思是,Lua
语言服务器(lua_ls)被你的编辑器(如 VS Code
或 Neovim)告知,要将整个 /home/foobar
目录作为工作区进行扫描,而服务器由于性能或安全方面的考量,拒绝了这个指令。这通常是一个配置问题,可以通过正确设置工作区解决。
解决方案
在你的Neovim配置目录下创建.luarc.json文件,明确告诉lua_ls这就是项目根据目录。即
1 | { |
其中:runtime.version一行,指明了兼容Lua 5.1版本。同时使用workspace.ignoreDir来忽略无关目录,以提高性能,所以需要配置这个忽略列表。
为什么之前会报错?
默认情况下,
nvim-lspconfig的lua_ls如果没有找到项目根目录,会回退到使用当前工作目录(vim.loop.cwd())。如果你是在主目录下启动Neovim(例如直接运行nvim ~/.config/nvim/init.lua),那么当前工作目录就是/home/foobar,导致lua_ls被设置为扫描整个主目录,从而触发拒绝。创建
.luarc.json后,root_pattern会优先匹配,从而正确设置工作区。按上述步骤操作后,错误信息就会消失,
LSP功能也能正常使用。