-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
82 lines (39 loc) · 357 KB
/
search.xml
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
79
80
81
82
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>时间计算器</title>
<link href="/Time-Calculator/"/>
<url>/Time-Calculator/</url>
<content type="html"><![CDATA[<script src="../js/time-calculator.js"></script><link rel="stylesheet" type="text/css" href="../css/time-calculator.css"><h2 id="设置时间并转化为儒略日"><strong>设置时间并转化为儒略日</strong></h2><div align="center"><form> <select name="timezone" id="timezone"> <option value="0">UTC</option> <option value="1">UTC+1</option> <option value="2">UTC+2</option> <option value="3">UTC+3</option> <option value="4">UTC+4</option> <option value="5">UTC+5</option> <option value="6">UTC+6</option> <option value="7">UTC+7</option> <option value="8">UTC+8</option> <option value="9">UTC+9</option> <option value="10">UTC+10</option> <option value="11">UTC+11</option> <option value="12">UTC+12</option> <option value="-1">UTC-1</option> <option value="-2">UTC-2</option> <option value="-3">UTC-3</option> <option value="-4">UTC-4</option> <option value="-5">UTC-5</option> <option value="-6">UTC-6</option> <option value="-7">UTC-7</option> <option value="-8">UTC-8</option> <option value="-9">UTC-9</option> <option value="-10">UTC-10</option> <option value="-11">UTC-11</option> <option value="-12">UTC-12</option> </select></form><br></div><div align="center"><table> <tr> <th>年</th> <th>月</th> <th>日</th> </tr> <tr> <td><input type="text" id="year" size="10em"/></td> <td><input type="text" id="month" size="10em"/></td> <td><input type="text" id="day" size="10em"/></td> </tr> <tr> <th>时</th> <th>分</th> <th>秒</th> </tr> <tr> <td><input type="text" id="hour" size="10em"/></td> <td><input type="text" id="minute" size="10em"/></td> <td><input type="text" id="second" size="10em"/></td> </tr></table></div><div align="center"><button value="submit" onclick="time_to_JD()" class="button">转化</button><br><input id="JD" size="25em"/></div><hr><h2 id="将当前时间转化为儒略日"><strong>将当前时间转化为儒略日</strong></h2><body onload="time_now()"><div align="center" id="clock" class="clock"></div></body><div align="center"><button value="submit" onclick="time_now_to_JD()" class="button">转化</button><br><input id="JD_now" size="25em"/></div>]]></content>
<categories>
<category> 工具 </category>
</categories>
<tags>
<tag> 天文 </tag>
</tags>
</entry>
<entry>
<title>Arch Linux 双系统安装指南</title>
<link href="/ArchLinux-Installation/"/>
<url>/ArchLinux-Installation/</url>
<content type="html"><![CDATA[<h2 id="准备工作"><strong>准备工作</strong></h2><h3 id="下载-Arch-Linux-系统-ISO-镜像"><strong>下载 Arch Linux 系统 ISO 镜像</strong></h3><h4 id="Arch-Linux-官网下载"><strong>Arch Linux 官网下载</strong></h4><p>官网的下载地址为:</p><p><a href="https://archlinux.org/releng/releases/">Arch Linux – Releases</a></p><p>但是只提供 Torrent 和 Magnet 链接</p><h4 id="镜像网站下载"><strong>镜像网站下载</strong></h4><p>可以在清华大学镜像:</p><p><a href="https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/">https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/</a></p><p>或者上海交大镜像:</p><p><a href="https://mirror.sjtu.edu.cn/archlinux/iso/latest/">https://mirror.sjtu.edu.cn/archlinux/iso/latest/</a></p><p>下载到最新版的系统 ISO 镜像</p><h4 id="本地制作-ISO-镜像"><strong>本地制作 ISO 镜像</strong></h4><p>还可以用下面的方法在一台 Arch Linux 设备上制作自定义的 ISO 镜像:</p><p><a href="https://wiki.archlinux.org/title/Archiso">Archiso – ArchWiki</a></p><p>制作之前需要下载软件 <code>archiso</code>,然后复制配置文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cp</span> -r /usr/share/archiso/configs/baseline/ (profile_directory)</span><br></pre></td></tr></table></figure><p>并执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> mkarchiso (profile_directory)/baseline</span><br></pre></td></tr></table></figure><p>在 <code>(profile_directory)</code> 目录的 <code>out</code> 文件夹下可以找到 ISO 镜像</p><h3 id="为-Linux-系统分区"><strong>为 Linux 系统分区</strong></h3><p>右键点击开始菜单,选择“磁盘管理”,分出一块空分区,建议不小于 64GB</p><p><strong>Windows 安装程序会创建一个 100MiB 的 EFI 系统分区,一般并不足以放下双系统所需要的所有文件(即 Linux 的 GRUB 文件),可以在将 Windows 安装到盘上之前就用 Arch 安装媒体创建一个较大的 EFI 系统分区(建议多于 256MiB),之后 Windows 安装程序将会使用你自己创建的 EFI 分区,而不是再创建一个</strong></p><h3 id="关闭快速启动"><strong>关闭快速启动</strong></h3><p>Windows 工具 >> 控制面板 >> 电源选项 >> 选择电源按钮的功能 >> 更改当前不可用的设置 >> 关闭快速启动 >> 保存修改</p><h3 id="关闭-Secure-Boot"><strong>关闭 Secure Boot</strong></h3><h4 id="进入-UEFI-BIOS-设置"><strong>进入 UEFI/BIOS 设置</strong></h4><p>ThinkPad 的操作如下:启动 ThinkPad 时按 <code>Enter</code> 打断正常开机,然后按下 <code>Fn+Esc</code> 解锁 <code>Fn</code> 按钮,再按 <code>Fn+F1</code> 进入 UEFI/BIOS 设置</p><h4 id="关闭-Secure-Boot-2"><strong>关闭 Secure Boot</strong></h4><p>在 UEFI/BIOS 设置界面:</p><p>ThinkPad 的操作如下:Security >> Secure Boot >> Off</p><h3 id="删除多余的-Windows-启动项"><strong>删除多余的 Windows 启动项</strong></h3><p>如果在电脑上装有多个 Windows,则系统只会选择其中一个在 Windows Boot Manager 中启动,若要删除多余的启动项,在 Windows 的“系统配置”(搜索框中输入 <code>msconfig</code> 或在“Windows 工具”中选择)的“引导”页面即可删除</p><h3 id="刻录-USB-启动盘"><strong>刻录 USB 启动盘</strong></h3><h4 id="Windows-系统方案"><strong>Windows 系统方案</strong></h4><p>Windows 上可以用 <a href="https://rufus.ie/zh/">Rufus</a>,支持 Windows 和 Linux 系统镜像,但无法在 Linux 上使用(只提供 Windows 版 EXE 可执行文件)</p><h4 id="Linux-系统方案"><strong>Linux 系统方案</strong></h4><p>Linux 上可以用命令行刻录 USB 启动盘</p><p>首先使用 <code>lsblk</code> 检查 USB 设备的名称(<code>NAME</code> 一列)和挂载点(<code>MOUNTPOINTS</code> 一列),例如 <code>/dev/sda</code>,需要设备处于插入但未挂载的状态</p><p>如果被挂载,可以用 <code>sudo umount (partition_name)</code> 或 <code>sudo umount (mount_point)</code> 卸载设备,卸载磁盘的所有被挂载的分区</p><p>例如 <code>sudo umount /dev/sda1</code> 或 <code>sudo umount /run/media/(user_name)/(device_label)</code></p><p>之后格式化磁盘:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> wipefs --all /dev/sda</span><br></pre></td></tr></table></figure><p>之后直接将 ISO 镜像拷贝到 USB 中(这一步需要数分钟):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> <span class="built_in">cp</span> (iso_path)/(iso_name) /dev/sda</span><br></pre></td></tr></table></figure><h4 id="跨平台方案"><strong>跨平台方案</strong></h4><p>推荐使用 <a href="https://www.ventoy.net/cn/index.html">Ventoy</a>,在 Windows 和 Linux 上都可以使用,方法是下载安装包后解压、安装到 USB 上,之后直接将 ISO 镜像拷贝到 USB 中即可选择镜像文件进行登录系统,支持多个系统镜像登录</p><h3 id="从-USB-启动"><strong>从 USB 启动</strong></h3><h4 id="在-Windows-中设置从-USB-启动"><strong>在 Windows 中设置从 USB 启动</strong></h4><p>设置 >> 恢复 >> 立即重新启动 >> USB HDD</p><h4 id="在-UEFI-中设置从-USB-启动"><strong>在 UEFI 中设置从 USB 启动</strong></h4><p>启动时按 <code>Enter</code> 打断正常开机,然后按下 <code>Fn+Esc</code> 解锁 <code>Fn</code> 按钮,再按 <code>Fn+F12</code> 选择第一个启动项为 USB HDD</p><h2 id="安装系统"><strong>安装系统</strong></h2><h3 id="连接到互联网"><strong>连接到互联网</strong></h3><p>检查确保系统已经启用了网络接口:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip <span class="built_in">link</span></span><br></pre></td></tr></table></figure><p>对于无线局域网(WLAN)和无线广域网(WWAN),请确保网卡未被 <code>rfkill</code> 禁用:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rfkill</span><br></pre></td></tr></table></figure><p>此时应该全部显示 <code>unblocked</code>,否则使用命令 <code>rfkill unblock (type_name)</code> 启用,例如 <code>rfkill unblock wlan</code></p><p>如果使用有线以太网,连接网线即可</p><p>如果使用 WiFi,使用 <code>iwctl</code> 连接无线网络:</p><p>首先找到网络设备:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">iwctl device list</span><br></pre></td></tr></table></figure><p>获得 <code>device_name</code>,一般是 <code>wlan0</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">iwctl station (device_name) scan</span><br><span class="line">iwctl station (device_name) get-networks</span><br><span class="line">iwctl station (device_name) connect (SSID)</span><br></pre></td></tr></table></figure><p>也可以输入 <code>iwctl</code> 进入交互模式,此时会显示 <code>[iwd]#</code> 标志上面的命令不加 <code>iwctl</code> 输入,最后用 <code>exit</code> 推出</p><p>连接到有线或无线网络后,可以用 <code>ping</code> 测试:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ping -c (count_number) archlinux.org</span><br></pre></td></tr></table></figure><h3 id="更新系统时间"><strong>更新系统时间</strong></h3><p>使用 <code>timedatectl</code> 开启 NTP 同步时间,确保系统时间是准确的:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">timedatectl set-ntp <span class="literal">true</span></span><br></pre></td></tr></table></figure><h3 id="建立硬盘分区"><strong>建立硬盘分区</strong></h3><p><strong>对 Linux 分区建议使用 BTRFS/XFS/EXT4 文件系统</strong></p><p>可以使用 <code>lsblk -f</code> 或 <code>fdisk -l</code> 查看硬盘 <code>/dev/(disk_name)</code>,如 <code>/dev/sda</code>、<code>/dev/nvme0n1</code> 等,前者多用于 HDD,后者多用于 SSD</p><p>修改分区可以用 <code>parted /dev/(disk_name)</code>、<code>cfdisk /dev/(disk_name)</code>、<code>fdisk /dev/(disk_name)</code> 等,下面以 <code>parted</code> 为例,注意要</p><p>使用 <code>parted /dev/(disk_name)</code> 修改分区,可以使用交互模式</p><p><code>parted</code> 常用命令:</p><ul><li><code>help</code>:帮助</li><li><code>print</code>:显示分区状态</li><li><code>unit</code>:更改单位,推荐使用 <code>s</code>(扇区)</li><li><code>set</code>:设置 <code>flag</code>,例如在分区 1 上创建 EFI 分区需要设置 <code>flag</code> 为 <code>esp</code>:<code>set 1 esp on</code></li><li><code>mkpart</code>:创建分区,分区类型选择 <code>primary</code>,文件系统类型选择 <code>fat32</code>(对 EFI 分区),<code>btrfs/xfs/ext4</code>(对 Linux 分区),<code>ntfs</code>(对 Windows 分区)</li><li><code>resizepart</code>:改变分区大小</li><li><code>rm</code>:删除分区</li><li><code>name</code>:更改分区名字,比如将分区 2 改名为 <code>Arch</code>,需要设置:<code>name 2 'Arch'</code></li><li><code>quit</code>:退出</li></ul><p>更多操作参考以下网址:</p><p><a href="https://www.gnu.org/software/parted/manual/parted.html">GNU Parted User Manual</a></p><h3 id="创建文件系统"><strong>创建文件系统</strong></h3><p>例如,要在根分区 <code>/dev/(root_partition)</code> 上创建一个 BTRFS 文件系统,请运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkfs.btrfs /dev/(root_partition)</span><br></pre></td></tr></table></figure><p>XFS 和 EXT4 对应的命令就是 <code>mkfs.xfs</code> 和 <code>mkfs.ext4</code></p><p>如果需要覆盖原有分区,加入 <code>-f</code> 参数强制执行即可</p><h3 id="挂载分区"><strong>挂载分区</strong></h3><p>首先将根磁盘卷挂载到 <code>/mnt</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mount /dev/(root_partition) /mnt</span><br></pre></td></tr></table></figure><p>对于 UEFI 系统,挂载 EFI 系统分区(一般是 <code>lsblk</code> 输出的第一个分区,文件系统一般是 FAT32):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mount --<span class="built_in">mkdir</span> /dev/(efi_system_partition) /mnt/boot</span><br></pre></td></tr></table></figure><p><strong>挂载 EFI 系统分区一定要加 <code>--mkdir</code> 参数</strong></p><h3 id="选择镜像源"><strong>选择镜像源</strong></h3><p><strong>一般建议选择清华大学镜像和上海交大镜像,这两个镜像站覆盖较全、稳定且积极维护</strong></p><p>编辑 <code>/etc/pacman.d/mirrorlist</code>(ISO 镜像中自带有 <code>vim</code> 等常用编辑器):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><p>按 <code>:</code> 进入命令模式,输入 <code>:%d</code>并按 <code>Enter</code> 删除全部内容,添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch</span><br></pre></td></tr></table></figure><p>改为清华大学镜像</p><p>或添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Server = https://mirror.sjtu.edu.cn/archlinux/$repo/os/$arch</span><br></pre></td></tr></table></figure><p>改为上海交大镜像</p><p><strong>这个文件接下来还会被 <code>pacstrap</code> 复制到新系统里,所以请确保设置正确</strong></p><h3 id="安装必需的软件包"><strong>安装必需的软件包</strong></h3><p>使用 <code>pacstrap</code> 脚本,安装 base 软件包、Linux 内核、常规硬件的固件、文本编辑器等:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacstrap /mnt base linux linux-firmware sof-firmware vim</span><br></pre></td></tr></table></figure><h3 id="生成-fstab-文件"><strong>生成 fstab 文件</strong></h3><p>用以下命令生成 fstab 文件 (用 <code>-U</code> 或 <code>-L</code> 选项设置 UUID 或卷标):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">genfstab -U /mnt >> /mnt/etc/fstab</span><br></pre></td></tr></table></figure><h3 id="进入新的-Archlinux-系统"><strong>进入新的 Archlinux 系统</strong></h3><p>更改根目录到新安装的系统:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">arch-chroot /mnt</span><br></pre></td></tr></table></figure><p>更新软件包缓存:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Syu</span><br></pre></td></tr></table></figure><h3 id="时区"><strong>时区</strong></h3><p>设置时区:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ln</span> -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</span><br><span class="line">hwclock --systohc</span><br></pre></td></tr></table></figure><h3 id="本地化"><strong>本地化</strong></h3><p>编辑 <code>/etc/locale.gen</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/locale.gen</span><br></pre></td></tr></table></figure><p>取消掉 <code>en_US.UTF-8 UTF-8</code> 和 <code>zh_CN.UTF-8 UTF-8</code> 两行的注释</p><p>接着生成 locale 信息:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">locale-gen</span><br></pre></td></tr></table></figure><p>然后创建 <code>/etc/locale.conf</code> 文件,并编辑设定 <code>LANG</code> 变量:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">LANG=en_US.UTF-8</span><br></pre></td></tr></table></figure><p><strong>不推荐在 <code>locale.conf</code> 中设置任何中文 locale,会导致 TTY 乱码</strong></p><h3 id="网络配置"><strong>网络配置</strong></h3><p>创建 <code>/etc/hostname</code> 文件,写入自定义的主机名:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">(my_hostname)</span><br></pre></td></tr></table></figure><p>编辑本地主机名解析 <code>/etc/hosts</code>,写入:(编辑 <code>/etc/hosts</code> 时空白建议用 <code>Tab</code> 键,下同)</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">127.0.0.1 localhost</span><br><span class="line">::1 localhost</span><br><span class="line">127.0.1.1 (my_hostname)</span><br></pre></td></tr></table></figure><p>安装网络管理软件 <code>NetworkManager</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S networkmanager</span><br></pre></td></tr></table></figure><p>启用 <code>NetworkManager</code>(<code>systemctl</code> 命令对大小写敏感):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl <span class="built_in">enable</span> NetworkManager</span><br></pre></td></tr></table></figure><p><strong>一定要安装网络管理软件,否则重启后将无法联网</strong></p><h3 id="创建-initramfs"><strong>创建 initramfs</strong></h3><p>执行 <code>ls /boot</code> 检查 <code>/boot</code> 中是否有遗留的旧内核 initramfs,若有则删除之</p><p>之后执行以下命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkinitcpio -P</span><br></pre></td></tr></table></figure><h3 id="Root-用户密码"><strong>Root 用户密码</strong></h3><p>设置 Root 用户密码:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">passwd</span><br></pre></td></tr></table></figure><h3 id="安装引导程序"><strong>安装引导程序</strong></h3><p><strong>这是安装的最后一步也是至关重要的一步,请按指引正确安装好引导加载程序后再重新启动,否则重启后将无法正常进入系统</strong></p><p>首先下载 <code>grub</code> 和 <code>efibootmgr</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S grub efibootmgr</span><br></pre></td></tr></table></figure><p>输入 <code>efibootmgr</code> 可以查看所有的启动项,每一个启动项都有一个四位数字的编号 <code>(boot_number)</code>,可以使用 <code>efibootmgr -b (boot_number) -B</code> 命令删除原来的启动项</p><p>接着执行以下命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch</span><br></pre></td></tr></table></figure><p>最后更新 GRUB 设置:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><h3 id="重启"><strong>重启</strong></h3><p>输入 <code>exit</code> 退出 chroot 环境</p><p>输入 <code>umount -R /mnt</code> 手动卸载被挂载的分区</p><p>最后,执行 <code>reboot</code> 重启系统,<code>systemd</code> 将自动卸载仍然挂载的任何分区</p><p><strong>不要忘记移除安装介质</strong></p><h2 id="初始配置"><strong>初始配置</strong></h2><p><strong>现在登录到新装好的系统时使用的是 Root 用户,用户名为 <code>root</code>,需要手动输入</strong></p><h3 id="连接网络"><strong>连接网络</strong></h3><p>命令行输入 <code>nmtui</code> 并按照终端上的图形界面一步一步操作</p><h3 id="设置新用户"><strong>设置新用户</strong></h3><p>设置用户名为 <code>(user_name)</code>,建议只使用小写字母和数字:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">useradd -m -G wheel (user_name)</span><br></pre></td></tr></table></figure><p>为用户创建密码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">passwd (user_name)</span><br></pre></td></tr></table></figure><p><strong>一定要设置在 wheel 用户组里面</strong></p><h3 id="sudo-配置"><strong>sudo 配置</strong></h3><p>首先需要下载 <code>sudo</code> 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S <span class="built_in">sudo</span></span><br></pre></td></tr></table></figure><p>sudo 的配置文件是 <code>/etc/sudoers</code>,更改配置需要使用命令 <code>visudo</code>,其默认编辑器是 Vi,若要改为 Vim,则首先在终端中输入以下命令用 Vim 打开 <code>visudo</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">EDITOR=vim visudo</span><br></pre></td></tr></table></figure><h4 id="更改默认编辑器为-Vim"><strong>更改默认编辑器为 Vim</strong></h4><p>在开头的一个空行键入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Defaults editor=/usr/bin/vim</span><br></pre></td></tr></table></figure><p>按 <code>Esc</code> 进入命令模式,再按 <code>:x</code> 保存,按 <code>Enter</code> 退出</p><h4 id="用户组授权"><strong>用户组授权</strong></h4><p>取消注释 <code>%wheel ALL=(ALL) ALL</code></p><p>如果不想每次执行 Root 用户命令都输入密码,可以取消注释 <code>%wheel ALL=(ALL) NOPASSWD: ALL</code></p><p><strong>必须保留最前面的 <code>%</code>,这不是注释的一部分</strong></p><h4 id="单个用户免密码"><strong>单个用户免密码</strong></h4><p>在最后一行(空行)按 <code>i</code> 进入输入模式,加上这一行:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Defaults:(user_name) !authenticate</span><br></pre></td></tr></table></figure><p>进入命令模式,保存退出即可</p><p><strong>注:如果想保留输入密码的步骤但是想在输入密码时显示星号,则加上一行 <code>Defaults env_reset,pwfeedback</code> 即可</strong></p><h3 id="安装并启用蓝牙"><strong>安装并启用蓝牙</strong></h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">pacman -S bluez pulseaudio-bluetooth</span><br><span class="line">systemctl <span class="built_in">enable</span> bluetooth</span><br></pre></td></tr></table></figure><p>这里的 <code>pulseaudio-bluetooth</code> 是用于连接蓝牙耳机的</p><h3 id="KDE-Plasma-桌面安装"><strong>KDE Plasma 桌面安装</strong></h3><h4 id="安装-Wayland-和-SDDM"><strong>安装 Wayland 和 SDDM</strong></h4><p>安装 Wayland:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S wayland</span><br></pre></td></tr></table></figure><p>安装 SDDM:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S sddm</span><br></pre></td></tr></table></figure><p>SDDM 字体选择 <code>noto-fonts</code></p><h4 id="启用-SDDM"><strong>启用 SDDM</strong></h4><p><strong>不启用 SDDM 等显示管理器则无法进入图形界面</strong></p><p>启用 SDDM:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl <span class="built_in">enable</span> sddm</span><br></pre></td></tr></table></figure><h4 id="安装-Plasma-桌面"><strong>安装 Plasma 桌面</strong></h4><p>安装 Plasma 桌面:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S plasma</span><br></pre></td></tr></table></figure><p>可以排除掉一些软件包,如 <code>discover</code>、<code>drkonqi</code>、<code>flatpak-kcm</code>、<code>plasma-firewall</code>、<code>plasma-welcome</code></p><p><code>jack</code> 选择 <code>jack2</code></p><p><code>qt6-multimedia-backend</code> 选择 <code>qt6-multimedia-ffmpeg</code></p><p><code>emoji-font</code> 选择 <code>noto-fonts-emoji</code></p><h4 id="安装必要的软件"><strong>安装必要的软件</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S firefox konsole dolphin dolphin-plugins ark kate gwenview spectacle yakuake okular poppler-data git adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts</span><br></pre></td></tr></table></figure><p><code>firefox</code> 也可以替换为其余浏览器,但可能需要使用 AUR 软件包管理器(使用方法见下文),例如 <code>microsoft-edge-stable-bin</code> 和 <code>google-chrome</code></p><p><code>dolphin-plugins</code> 提供了右键菜单挂载 ISO 镜像等选项</p><p><code>poppler-data</code> 是 PDF 渲染所需的编码数据,不下载 <code>poppler-data</code> 会导致部分 PDF 文件的中文字体无法在 Okular 中显示</p><p><strong>KDE Frameworks/KDE Gear/Plasma 的更新时间表可以在 <a href="https://community.kde.org/Schedules">KDE Community Wiki</a> 查看</strong></p><h2 id="在图形界面下设置"><strong>在图形界面下设置</strong></h2><p><strong>现在重启电脑后即可进入图形界面,用户从 Root 变为新建的普通用户</strong></p><h3 id="系统设置"><strong>系统设置</strong></h3><p><strong>此时系统语言为英语,可以执行 <code>export LANGUAGE=zh_CN.UTF-8</code> 将终端输出修改为中文,再执行 <code>systemsettings</code> 打开系统设置</strong></p><h4 id="语言和区域设置"><strong>语言和区域设置</strong></h4><p><strong>将系统语言改为中文需要保证 <code>localectl list-locales</code> 输出包含 <code>zh_CN.UTF-8</code> 并且安装了中文字体(否则会缺字无法显示)</strong></p><p>系统设置 >> 区域和语言 >> 语言 >> 改为“简体中文”</p><p>其余“数字”、“时间”、“货币”等选项可以分别修改,可以搜索“China”找到“简体中文”</p><h4 id="电源、开机、锁屏设置"><strong>电源、开机、锁屏设置</strong></h4><p>系统设置 >> 省电功能 >> 节能 >> “交流供电”以及“电池供电” >> 合上笔记本盖时 >> 选择“息屏”</p><p>系统设置 >> 会话 >> 桌面会话 >> 登入时 >> 选择“启动为空会话”</p><p>系统设置 >> 锁屏 >> 自动锁定屏幕 >> 调整空闲时间</p><h4 id="高分辨率设置"><strong>高分辨率设置</strong></h4><p>Wayland 会自动启用缩放率 175% 和光标大小 24,如果不合适可以如下调整:</p><p>系统设置 >> 显示和监视器 >> 分辨率 >> 缩放率 >> 200%</p><p>系统设置 >> 显示和监视器 >> 旧式应用程序(X11) >> 由应用程序进行缩放</p><p>系统设置 >> 光标 >> 大小 >> 18</p><h4 id="SDDM-设置"><strong>SDDM 设置</strong></h4><p>系统设置 >> 颜色和主题 >> 登录屏幕(SDDM) >> 选择“Breeze 微风” >> 应用 Plasma 设置</p><p>创建文件 <code>/etc/sddm.conf.d/hidpi.conf</code>,并加入以下内容:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[General]</span><br><span class="line">GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192</span><br><span class="line"></span><br><span class="line">[Wayland]</span><br><span class="line">EnableHiDPI=true</span><br></pre></td></tr></table></figure><p>然后重启电脑</p><h4 id="锁屏设置"><strong>锁屏设置</strong></h4><p>自动锁定屏幕的时间和锁屏界面的外观等在此处设置:</p><p>系统设置 >> 工作区行为 >> 锁屏</p><h4 id="自动启动设置"><strong>自动启动设置</strong></h4><p>系统设置 >> 自动启动</p><p>可以添加 Yakuake 下拉终端为自动启动</p><h4 id="自动挂载设置"><strong>自动挂载设置</strong></h4><p>系统设置 >> 磁盘和相机 >> 设备自动挂载 >> 所有设备</p><p>勾选“登录时”和“插入时”,以及“自动挂载新的可移动设备”</p><h3 id="终端快捷键配置"><strong>终端快捷键配置</strong></h3><p>打开终端 Konsole/Yakuake(Yakuake 设置自动启动后可以用 <code>Fn+F12</code> 直接打开):</p><p>设置 >> 配置键盘快捷键 >> 复制改为 <code>Ctrl+C</code> ,粘贴改为 <code>Ctrl+V</code>,查找改为 <code>Ctrl+F</code></p><h3 id="pacman-包管理器的使用技巧"><strong>pacman 包管理器的使用技巧</strong></h3><p>这里介绍了 <code>pacman</code> 包管理器的常用操作</p><p>更多操作参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Pacman">Pacman – ArchWiki</a></p><p>也可以使用 <code>man pacman</code> 和 <code>man pacman.conf</code> 查询</p><h4 id="下载软件包"><strong>下载软件包</strong></h4><p>下载软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S (package_name)</span><br></pre></td></tr></table></figure><h4 id="删除软件包"><strong>删除软件包</strong></h4><p>删除软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -R (package_name)</span><br></pre></td></tr></table></figure><p>删除软件包,及其所有未被其他已安装软件包依赖的软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Rs (package_name)</span><br></pre></td></tr></table></figure><p>删除软件包,及其 <code>pacman</code> 备份文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Rn (package_name)</span><br></pre></td></tr></table></figure><h4 id="更新软件包"><strong>更新软件包</strong></h4><p>更新所有软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Syu</span><br></pre></td></tr></table></figure><h4 id="搜索软件包"><strong>搜索软件包</strong></h4><p><code>pacman</code> 使用 <code>-Q</code> 参数查询本地软件包数据库,<code>-S</code> 查询远程数据库(包含全部软件包),以及 <code>-F</code> 查询文件数据库。要了解每个参数的子选项,分别参见 <code>pacman -Q --help</code>,<code>pacman -S --help</code> 和 <code>pacman -F --help</code></p><p>在远程数据库中查询软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Ss (package_name)</span><br></pre></td></tr></table></figure><p>搜索已安装的软件包:(<code>-s</code> 会使用正则表达式匹配所有相似的结果,如果没有 <code>-s</code> 会只显示全词匹配)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Qs (package_name)</span><br></pre></td></tr></table></figure><p>列出所有已安装的软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Q</span><br></pre></td></tr></table></figure><p>列出所有已安装的仓库外(一般就是 AUR)软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Qm</span><br></pre></td></tr></table></figure><p>列出所有孤立软件包(不再作为依赖的软件包),可以加 <code>-q</code> 选项不显示版本号:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Qdt</span><br></pre></td></tr></table></figure><p>获取已安装软件包所包含文件路径(比如用来查看软件包提供了什么可执行文件):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Ql (package_name)</span><br></pre></td></tr></table></figure><p>查询文件属于远程数据库中的哪个软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -F (file_name)</span><br></pre></td></tr></table></figure><p>查询远程库中软件包包含的文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -Fl (package_name)</span><br></pre></td></tr></table></figure><h4 id="检查依赖关系"><strong>检查依赖关系</strong></h4><p>以树状图的形式展示某软件包的依赖关系:(需要下载 <code>pacman-contrib</code> 软件包)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pactree (package_name)</span><br></pre></td></tr></table></figure><h4 id="降级软件包"><strong>降级软件包</strong></h4><p>在 <code>/var/cache/pacman/pkg/</code> 中找到旧软件包,双击打开安装实现手动降级,参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Downgrading_packages">Downgrading Packages – ArchWiki</a></p><h4 id="清理缓存"><strong>清理缓存</strong></h4><p><code>pacman-contrib</code> 软件包提供的 <code>paccache</code> 脚本默认会删除所有缓存的版本和已卸载的软件包,除了最近的3个会被保留:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> paccache -r</span><br></pre></td></tr></table></figure><p>更激进的方式是使用 <code>pacman</code> 清理全部软件安装包缓存:(即删除 <code>/var/cache/pacman/pkg/</code>、<code>/var/lib/pacman/</code> 下的全部内容)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Scc</span><br></pre></td></tr></table></figure><p>清理无用的孤立软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -R $(pacman -Qdtq)</span><br></pre></td></tr></table></figure><p>若显示 <code>error: no targets specified (use -h for help)</code> 则说明没有孤立软件包需要清理</p><p><strong>若不小心终止了 <code>pacman</code> 进程,则需要先删除 <code>/var/lib/pacman/db.lck</code> 才能再次启动 <code>pacman</code></strong></p><h4 id="从本地安装包安装软件"><strong>从本地安装包安装软件</strong></h4><p>pacman 有从本地安装包安装软件的功能,只需输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -U (package_name).tar.zst</span><br></pre></td></tr></table></figure><h4 id="从-PKGBUILD-安装软件"><strong>从 PKGBUILD 安装软件</strong></h4><p>在 PKGBUILD 所在的文件夹内执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">makepkg -si</span><br></pre></td></tr></table></figure><p>即可安装</p><h3 id="AUR-软件仓库"><strong>AUR 软件仓库</strong></h3><p>首先安装 <code>base-devel</code> 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S base-devel</span><br></pre></td></tr></table></figure><p>之后下载支持 AUR 的软件包管理器</p><p><strong>注意 Arch 预装的包管理器 pacman 不支持 AUR,也不打包 AUR 软件包管理器,需要单独下载 AUR 软件包管理器</strong></p><h4 id="paru"><strong>paru</strong></h4><p>paru 是一个支持官方仓库和 AUR 仓库的命令行软件包管理器</p><p>执行以下命令安装 paru:(需要保证能够连接 GitHub,一般需要修改 hosts)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://aur.archlinux.org/paru-bin.git</span><br><span class="line"><span class="built_in">cd</span> paru-bin</span><br><span class="line">makepkg -si</span><br></pre></td></tr></table></figure><p>paru 是一个 pacman 封装,其命令与 pacman 基本相同,即将上一节的 <code>pacman/sudo pacman</code> 替换为 <code>paru</code></p><p>详细使用教程参考以下网址:</p><p><a href="https://github.com/Morganamilo/paru">paru – GitHub</a></p><p>也可以使用 <code>man paru</code> 和 <code>man paru.conf</code> 查询</p><p>如果不想让 <code>paru</code> 下载软件包时显示 <code>PKGBUILD</code> 文件内容,需要在 <code>/etc/paru.conf</code> 的 <code>[options]</code> 一栏中加入一行 <code>SkipReview</code></p><h4 id="octopi"><strong>octopi</strong></h4><p>octopi 是一个使用图形界面的软件包管理器,执行以下命令安装 <code>pamac</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://aur.archlinux.org/octopi.git</span><br><span class="line"><span class="built_in">cd</span> octopi</span><br><span class="line">makepkg -si</span><br></pre></td></tr></table></figure><p>其使用教程参考以下网址:</p><p><a href="https://tintaescura.com/projects/octopi">Octopi – Tinta escura</a></p><p>octopi 的 AUR 支持需要点击中间的绿色外星人图标,依赖 paru 等软件包管理器</p><h3 id="Arch-Linux-CN-软件仓库(可选)"><strong>Arch Linux CN 软件仓库(可选)</strong></h3><p>在 <code>/etc/pacman.conf</code> 文件末尾添加以下两行以启用清华大学镜像:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[archlinuxcn]</span><br><span class="line">Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch</span><br></pre></td></tr></table></figure><p>或上海交大镜像:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[archlinuxcn]</span><br><span class="line">Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux-cn/$arch</span><br></pre></td></tr></table></figure><p>之后执行下面的命令安装 <code>archlinuxcn-keyring</code> 包导入 GPG 密钥</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Sy archlinuxcn-keyring</span><br><span class="line"><span class="built_in">sudo</span> pacman -Syu</span><br></pre></td></tr></table></figure><p>这样就开启了 pacman 对 Arch Linux CN 的支持</p><p><strong>注意一定要写第一行的 <code>[archlinuxcn]</code>,安装 archlinuxcn-keyring 时要用 <code>-Sy</code> 安装(更新后安装)</strong></p><h3 id="Arch4edu-软件仓库(可选)"><strong>Arch4edu 软件仓库(可选)</strong></h3><p>Arch4edu 是面向高校用户推出的非官方软件仓库,支持 Arch Linux 和 Arch Linux ARM,主要包含高校用户常用的科研、教学及开发软件</p><p>首先导入 GPG 密钥:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">pacman-key --recv-keys 7931B6D628C8D3BA</span><br><span class="line">pacman-key --finger 7931B6D628C8D3BA</span><br><span class="line">pacman-key --lsign-key 7931B6D628C8D3BA</span><br></pre></td></tr></table></figure><p>在 <code>/etc/pacman.conf</code> 文件末尾添加以下两行以启用清华大学镜像:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[arch4edu]</span><br><span class="line">Server = https://mirrors.tuna.tsinghua.edu.cn/arch4edu/$arch</span><br></pre></td></tr></table></figure><p>最后更新系统:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Syu</span><br></pre></td></tr></table></figure><p>这样就开启了 pacman 对 Arch4edu 的支持</p><h3 id="双系统启动设置"><strong>双系统启动设置</strong></h3><p>下载 <code>os-prober</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S os-prober</span><br></pre></td></tr></table></figure><p>想要让 <code>grub-mkconfig</code> 探测其他已经安装的系统并自动把他们添加到启动菜单中,编辑 <code>/etc/default/grub</code> 并取消下面这一行的注释:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GRUB_DISABLE_OS_PROBER=false</span><br></pre></td></tr></table></figure><p>想要让 GRUB 记住上一次启动的启动项,首先将 <code>GRUB_DEFAULT</code> 的值改为 <code>saved</code>,再取消下面这一行的注释:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GRUB_SAVEDEFAULT=true</span><br></pre></td></tr></table></figure><p>使用 <code>grub-mkconfig</code> 工具重新生成 <code>/boot/grub/grub.cfg</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><p>此时会显示找到 Windows Boot Manager,说明设置双系统成功</p><p>如果下载了 AUR 软件包 <code>update-grub</code>,则可以直接执行 <code>sudo update-grub</code> 更新 GRUB 设置</p><h3 id="Linux-挂载-Windows-磁盘"><strong>Linux 挂载 Windows 磁盘</strong></h3><h4 id="使用-fstab-文件"><strong>使用 fstab 文件</strong></h4><p><strong>首先要确保设备加密和快速启动已经关闭,以下内容针对 Linux 5.15 及之后的内核中引入的 NTFS3 驱动</strong></p><p>官方推荐的方法是使用 UUID,以分别挂载 C 盘和 D 盘到 <code>/home/(user_name)/C</code> 和 <code>/home/(user_name)/D</code> 为例,在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lsblk -f</span><br></pre></td></tr></table></figure><p>在输出结果中可以发现 Windows 的硬盘分区,其中第一列(<code>NAME</code>)是卷标,第四列(<code>UUID</code>)是 UUID:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">NAME FSTYPE LABEL UUID</span><br><span class="line">├─(name_C) ntfs C (UUID_C)</span><br><span class="line">├─(name_D) ntfs D (UUID_D)</span><br></pre></td></tr></table></figure><p>接着就来修改系统文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /etc/fstab</span><br></pre></td></tr></table></figure><p>在最后加入这两行:(编辑 <code>/etc/fstab</code> 时空白建议用 <code>Tab</code> 键)</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">UUID=(UUID_C) /home/(user_name)/C ntfs3 defaults,windows_names,hide_dot_files,umask=000 0 0</span><br><span class="line">UUID=(UUID_D) /home/(user_name)/D ntfs3 defaults,windows_names,hide_dot_files,umask=000 0 0</span><br></pre></td></tr></table></figure><p>重启电脑后,即可自动挂载</p><p><strong>如果需要格式化 C 盘或 D 盘,先从 <code>/etc/fstab</code> 中删去对应的行,再操作,之后磁盘的 <code>UUID</code> 会被更改,再编辑 <code>/etc/fstab</code> ,重启挂载即可</strong></p><p>如果安装生成 fstab 文件时使用 <code>-L</code> 选项,即 <code>genfstab -L /mnt >> /mnt/etc/fstab</code>,则 <code>/etc/fstab</code> 中应加入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">/dev/(name_C) /home/(user_name)/C ntfs3 defaults,windows_names,hide_dot_files,umask=000 0 0</span><br><span class="line">/dev/(name_D) /home/(user_name)/D ntfs3 defaults,windows_names,hide_dot_files,umask=000 0 0</span><br></pre></td></tr></table></figure><p>参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/fstab">fstab – Archwiki</a></p><p><a href="https://man.archlinux.org/man/mount.8">mount(8) – Arch manual pages</a></p><p><a href="https://docs.kernel.org/filesystems/ntfs3.html">NTFS3 — The Linux Kernel documentation</a></p><h4 id="命令行挂载-NTFS-移动硬盘"><strong>命令行挂载 NTFS 移动硬盘</strong></h4><p>首先使用 <code>lsblk</code> 查看硬盘分区 <code>/dev/(partition_name)</code>,如 <code>/dev/sda1</code></p><p>之后设置挂载点,默认是在 <code>/run/media/(user_name)/</code> 下创建一个和硬盘分区名称一致的文件夹:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /run/media/(user_name)/</span><br><span class="line"><span class="built_in">sudo</span> <span class="built_in">mkdir</span> ./(partition_name)</span><br></pre></td></tr></table></figure><p>也可以选择 <code>/mnt</code> 作为临时挂载点</p><p>再将移动硬盘挂载到新创建的文件夹,如:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> mount -t ntfs3 -o force /dev/(partition_name) /run/media/(user_name)/(partition_name)</span><br></pre></td></tr></table></figure><h3 id="网络设置"><strong>网络设置</strong></h3><h4 id="网络设备"><strong>网络设备</strong></h4><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip a</span><br></pre></td></tr></table></figure><p>输出网络设备名称的前两个字母表示设备种类:</p><p><code>lo</code> 为回环(loopback),<code>ww</code> 为无线广域网(WWAN,负责移动宽带连接),<code>wl</code> 为无线局域网(WLAN,负责 Wi-Fi 连接),<code>en</code> 为以太网(Ethernet,负责网线连接)</p><h4 id="ping-命令"><strong>ping 命令</strong></h4><p>IP 地址和连接情况可以通过对域名 <code>ping</code> 得到,例如:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ping -c (count_number) (website_destination)</span><br></pre></td></tr></table></figure><p>表示对网站域名 <code>(website_destination)</code> 发送 <code>(count_number)</code> 次 <code>ping</code> 连通请求</p><p><strong>Linux 上的 <code>ping</code> 命令默认是不停止发送请求的,必须指定发送次数或用 <code>Ctrl+C</code> 等方式强制终止</strong></p><h4 id="命令行连接-PKU-Wi-Fi"><strong>命令行连接 PKU Wi-Fi</strong></h4><p>方法一:命令行输入 <code>nmtui</code> 并按照终端上的图形界面一步一步操作</p><p>方法二:使用 <code>nmcli</code>,输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmcli device wifi connect PKU</span><br></pre></td></tr></table></figure><p>通用的操作是:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmcli device wifi connect (SSID) password (student_passowrd)</span><br></pre></td></tr></table></figure><p>注意这里的 SSID 是 Wi-Fi 的名称(如 PKU 或 TP-LINK_XXX),不是 IP 地址或 MAC 地址</p><h4 id="命令行连接-PKU-VPN"><strong>命令行连接 PKU VPN</strong></h4><p><strong>此处需要一直打开终端,故推荐使用 Yakuake</strong></p><p>首先下载 <code>openconnect</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S openconnect</span><br></pre></td></tr></table></figure><p>按 <code>Fn+F12</code> 打开 Yakuake,输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> openconnect --protocol=nc --user (student_ID) https://vpn.pku.edu.cn</span><br></pre></td></tr></table></figure><p>输入密码即可连接</p><p>之后可以按 <code>Fn+F12</code> 让它收起,不要关闭窗口(关闭窗口则 VPN 断开)</p><h4 id="图形化界面连接-PKU-Secure"><strong>图形化界面连接 PKU Secure</strong></h4><p>首先从系统托盘中点击网络图标,再点击 PKU Secure 连接,此时会弹出一个“编辑连接”的窗口,按照以下步骤设置:</p><p>Wi-Fi 安全 >> 安全 >> 企业 WPA/WPA2</p><p>Wi-Fi 安全 >> 认证 >> 受保护的 EAP(PEAP)</p><p>PEAP 版本 >> 自动</p><p>内部认证 >> MSCHAPv2</p><p>输入用户名、密码即可连接</p><h4 id="命令行连接-PKU-Secure"><strong>命令行连接 PKU Secure</strong></h4><p>首先进入 <code>nmcli</code> 配置:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmcli connection edit <span class="string">"PKU Secure"</span></span><br></pre></td></tr></table></figure><p>在 <code>nmcli</code> 界面内输入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">set wifi-sec.key-mgmt wpa-eap</span><br><span class="line">set ipv4.method auto</span><br><span class="line">set 802-1x.eap peap</span><br><span class="line">set 802-1x.phase2-auth mschapv2</span><br><span class="line">set 802-1x.identity (student_ID)</span><br><span class="line">set 802-1x.password (student_password)</span><br><span class="line">save</span><br><span class="line">activate</span><br></pre></td></tr></table></figure><h4 id="ThinkPad:图形化界面设置移动宽带网络"><strong>ThinkPad:图形化界面设置移动宽带网络</strong></h4><p>下载 <code>modemmanager</code> 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S modemmanager</span><br></pre></td></tr></table></figure><p>启用 ModemManager:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> --now ModemManager</span><br></pre></td></tr></table></figure><p>此时 Plasma 系统托盘的网络设置会多出一个移动宽带的图标选项</p><p>在“系统设置 >> WiFi 和网络”中,点击右下角的加号创建新的链接,选择“移动宽带”并创建,按照以下步骤设置:</p><p>设置移动宽带连接 >> 任何 GSM 设备</p><p>国家 >> 中国</p><p>提供商 >> China Unicom</p><p>选择您的资费方案 >> 没有列出我的资费方案</p><p>APN >> <code>bjlenovo12.njm2apn</code></p><p>保存即可激活</p><p><strong>提供商和 APN 可以在 Windows 系统的“设置 >> 网络和 Internet >> 手机网络 >> 运营商设置”上查找到,在“活动网络”处能找到提供商,在“Internet APN >> 默认接入点 >> 视图”中可以找到 APN 地址</strong></p><h4 id="修改-hosts-文件访问-GitHub"><strong>修改 hosts 文件访问 GitHub</strong></h4><p>修改 hosts 文件可以有效访问 GitHub,需要修改的文件是 <code>/etc/hosts</code>,Windows 下对应的文件位置为: <code>C:\Windows\System32\drivers\etc\hosts</code> (注意这里是反斜杠),修改内容参考以下网址:</p><p><a href="https://raw.hellogithub.com/hosts">HelloGitHub – hosts</a></p><p>可以用下面命令修改:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> sh -c <span class="string">'sed -i "/# GitHub520 Host Start/Q" /etc/hosts && curl https://raw.hellogithub.com/hosts >> /etc/hosts'</span></span><br></pre></td></tr></table></figure><h4 id="不显示回环连接"><strong>不显示回环连接</strong></h4><p>如果在 Plasma 系统托盘的网络设置中发现一个名为 <code>lo</code> 的连接,这是系统的回环连接</p><p>不显示回环连接可以编辑 <code>/etc/NetworkManager/NetworkManager.conf</code>,添加如下内容:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[keyfile]</span><br><span class="line">unmanaged-devices=interface-name:lo</span><br></pre></td></tr></table></figure><p>之后重启网络服务:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl restart NetworkManager</span><br></pre></td></tr></table></figure><h3 id="Vim-配置"><strong>Vim 配置</strong></h3><p>Vim 的配置文件主要有 <code>/usr/share/vim/vimfiles/archlinux.vim</code>,<code>/etc/vimrc</code> 和 <code>/home/(user_name)/.vimrc</code>,建议直接修改 <code>/etc/vimrc</code>,这样不会覆盖 <code>/usr/share/vim/vimfiles/archlinux.vim</code> 上定义的默认配置(语法高亮等)</p><p>Vim 的配置可以参考以下网址:</p><p><a href="http://vimdoc.sourceforge.net/htmldoc/options.html">Options – Vim Documentation</a></p><p>应用 <code>Ctrl+C</code>、<code>Ctrl+V</code>、<code>Ctrl+A</code>、<code>Ctrl+Z</code> 等快捷键,需要在 <code>/etc/vimrc</code> 中写入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">source $VIMRUNTIME/mswin.vim</span><br></pre></td></tr></table></figure><p><code>mswin.vim</code> 的源代码可以在这里找到:</p><p><a href="https://github.com/vim/vim/blob/master/runtime/mswin.vim">vim – mswin.vim</a></p><p>启用剪贴板功能,需要安装 <code>gvim</code> 软件包</p><h3 id="GNU-nano-下载与配置"><strong>GNU nano 下载与配置</strong></h3><p>下载 nano 文本编辑器:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S nano</span><br></pre></td></tr></table></figure><p>nano 的配置文件在 <code>/etc/nanorc</code>,可以通过取消注释设置选项配置文件,如:</p><p>取消注释 <code>set linenumbers</code> 可以显示行号</p><p>取消注释 <code>set tabsize 8</code> 可以更改 Tab 键的长度,例如 <code>set tabsize 4</code></p><p>取消注释 <code>set tabstospaces</code> 可以将 Tab 转换为空格</p><p>取消注释 <code>set matchbrackets "(<[{)>]}"</code> 可以匹配括号</p><p>取消注释 <code>include "/usr/share/nano/*.nanorc"</code> 一行和所有的颜色设置可以启用代码高亮</p><p>取消注释所有的 <code>Key bindings</code> 选项可以启用更常用的快捷键设定</p><p><strong>用 nano 编辑后保存的步骤是 <code>Ctrl+W</code> (Write Out) >> <code>Enter</code> >> <code>Ctrl+Q</code> (Exit),如果用默认的快捷键设置,则为 <code>Ctrl+O</code> (Write Out) >> <code>Enter</code> >> <code>Ctrl+X</code> (Exit)</strong></p><h3 id="命令行界面输出语言为英语"><strong>命令行界面输出语言为英语</strong></h3><p>在 <code>~/.bashrc</code> 中添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">export LC_ALL=en_US.UTF-8</span><br><span class="line">export LANGUAGE=en_US.UTF-8</span><br></pre></td></tr></table></figure><h3 id="时间设置"><strong>时间设置</strong></h3><h4 id="双系统时间不同步"><strong>双系统时间不同步</strong></h4><p>系统设置 >> 时间和日期 >> 自动设置日期和时间</p><p>在 Arch Linux 上设置硬件时间为 UTC:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> timedatectl set-local-rtc 0</span><br></pre></td></tr></table></figure><p>并在 Windows 上设置硬件时间为 UTC,与 Arch Linux 同步:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">reg add <span class="string">"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation"</span> /v RealTimeIsUniversal /d <span class="number">1</span> /t REG_QWORD /f</span><br></pre></td></tr></table></figure><p><strong>这一步需要在 Powershell(管理员)中执行</strong></p><h4 id="数字时钟设置-24-小时制"><strong>数字时钟设置 24 小时制</strong></h4><p>右键点击“数字时钟” >> 配置数字时钟 >> 时间显示 >> 24 小时制</p><h4 id="添加-TUNA-网络授时服务(可选)"><strong>添加 TUNA 网络授时服务(可选)</strong></h4><p>参考以下网址:</p><p><a href="https://tuna.moe/help/ntp/">TUNA NTP(网络授时)服务使用说明</a></p><h3 id="字体安装"><strong>字体安装</strong></h3><p>KDE Plasma 支持直接在 Dolphin 的右键菜单中安装 TTF/OTF 字体和 TTC/OTC 字体集</p><p><strong>注意不管是 Windows 还是 Linux 都要将字体“为所有用户安装”,尤其是 Windows 11 右键直接安装是安装到个人用户目录 <code>C:\Users\(user_name)\AppData\Local\Microsoft\Windows\Fonts</code> 而非系统目录 <code>C:\Windows\Fonts</code></strong></p><h4 id="命令行安装字体"><strong>命令行安装字体</strong></h4><p>将字体文件复制到 <code>/usr/share/fonts</code> 安装,方法如下:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> <span class="built_in">cp</span> (font-path)/* /usr/share/fonts</span><br><span class="line"><span class="built_in">cd</span> /usr/share/fonts</span><br><span class="line">fc-cache -fv</span><br></pre></td></tr></table></figure><p>这样就可以安装字体了</p><p><strong>微软系统字体文件夹在 <code>C:\Windows\Fonts</code>,可以复制到 <code>/usr/share/fonts</code> 安装,注意需要排除掉 MS Gothic、Yu Gothic 和 Malgun Gothic 字体,因它们只有部分日/韩文汉字字形(与中文汉字字形一样的会被排除,最后导致部分中文汉字显示为日/韩文字形)</strong></p><p><strong>注意 Microsoft Office 不支持嵌入 OTF 字体,只能嵌入 TTF 字体</strong></p><h4 id="安装中文字体"><strong>安装中文字体</strong></h4><p>推荐安装<a href="https://github.com/adobe-fonts/source-han-sans">思源黑体</a>、<a href="https://github.com/adobe-fonts/source-han-serif">思源宋体</a></p><p>命令行安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts</span><br></pre></td></tr></table></figure><p>并创建字体设置文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /etc/fonts/conf.d/64-language-selector-prefer.conf</span><br></pre></td></tr></table></figure><p>加入以下内容:</p><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta"><?xml version=<span class="string">"1.0"</span>?></span></span><br><span class="line"><span class="meta"><!DOCTYPE <span class="keyword">fontconfig</span> <span class="keyword">SYSTEM</span> <span class="string">"fonts.dtd"</span>></span></span><br><span class="line"><span class="tag"><<span class="name">fontconfig</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">alias</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">family</span>></span>sans-serif<span class="tag"></<span class="name">family</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">prefer</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">family</span>></span>Source Han Sans CN<span class="tag"></<span class="name">family</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">prefer</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">alias</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">alias</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">family</span>></span>serif<span class="tag"></<span class="name">family</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">prefer</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">family</span>></span>Source Han Serif CN<span class="tag"></<span class="name">family</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">prefer</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">alias</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">alias</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">family</span>></span>monospace<span class="tag"></<span class="name">family</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">prefer</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">family</span>></span>Source Han Sans CN<span class="tag"></<span class="name">family</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">prefer</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">alias</span>></span></span><br><span class="line"><span class="tag"></<span class="name">fontconfig</span>></span></span><br></pre></td></tr></table></figure><p>保存退出,重启电脑即可</p><h3 id="安装中文输入法"><strong>安装中文输入法</strong></h3><h4 id="安装-Fcitx5-输入法"><strong>安装 Fcitx5 输入法</strong></h4><p>推荐使用 Fcitx5:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S fcitx5-im fcitx5-chinese-addons</span><br></pre></td></tr></table></figure><p>编辑 <code>/etc/environment</code> 并添加以下几行:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">GTK_IM_MODULE=fcitx</span><br><span class="line">QT_IM_MODULE=fcitx</span><br><span class="line">XMODIFIERS=@im=fcitx</span><br></pre></td></tr></table></figure><p>然后重新登录,此时输入法会自动启动,默认的切换键是 <code>Ctrl+Space</code></p><p><strong>安装输入法之后需要重启电脑才能生效,如果无法启动输入法,在“系统设置 >> 输入法 >> 添加输入法”中手动添加“拼音”</strong></p><h4 id="配置与词库"><strong>配置与词库</strong></h4><p>Fcitx5 的配置在:</p><p>系统设置 >> 输入法</p><p>注意有“全局选项”、“附加组件”、“拼音”三个配置区域</p><p>可以添加词库:(部分包需要使用 AUR 源)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S fcitx5-pinyin-zhwiki fcitx5-pinyin-custom-pinyin-dictionary fcitx5-pinyin-moegirl fcitx5-pinyin-sougou</span><br></pre></td></tr></table></figure><p>虚拟键盘的配置在:</p><p>系统设置 >> 键盘 >> 虚拟键盘 >> 选择 Fcitx5</p><h4 id="其它版本"><strong>其它版本</strong></h4><p>Fcitx5 对应的 git 版本为:(需要使用 AUR 源)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S fcitx5-git fcitx5-chinese-addons-git fcitx5-gtk-git fcitx5-qt5-git fcitx5-configtool-git</span><br></pre></td></tr></table></figure><p>一个稳定的替代版本是 Fcitx 4:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S fcitx-im fcitx-configtool fcitx-cloudpinyin</span><br></pre></td></tr></table></figure><p>可以配合 googlepinyin 或 sunpinyin 使用,即执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S fcitx-googlepinyin</span><br></pre></td></tr></table></figure><p>或者:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S fcitx-sunpinyin</span><br></pre></td></tr></table></figure><p>也可以用 <code>sudo pacman -S sunpinyin</code> 安装 Sunpinyin</p><h3 id="安装-Firefox-的中文语言包"><strong>安装 Firefox 的中文语言包</strong></h3><p>Firefox 浏览器的中文语言包可以在官方仓库中下载:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S firefox-i18n-zh-cn</span><br></pre></td></tr></table></figure><h3 id="关闭启动和关机时的系统信息"><strong>关闭启动和关机时的系统信息</strong></h3><p>修改 <code>/etc/grub.d/10_linux</code>,删除 <code>message="$(gettext_printf "Loading Linux %s ..." ${version})"</code> 和 <code>message="$(gettext_printf "Loading initial ramdisk ...")"</code> 两行</p><p>然后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><h3 id="在登录时自动解锁-KWallet"><strong>在登录时自动解锁 KWallet</strong></h3><p>在登录时自动解锁 KWallet 需要安装 <code>kwallet-pam</code> 包来提供对 <a href="https://wiki.archlinux.org/title/PAM">PAM</a> 的兼容模块:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S kwallet-pam</span><br></pre></td></tr></table></figure><p>自动解锁的条件:</p><ul><li>KWallet 必须使用 blowfish 加密方式</li><li>所选择的 KWallet 密码必须与当前用户的密码相同</li><li>要自动解锁的密码库必须要命名为默认的 kdewallet,任何其他名字的密码库都不会自动解锁</li></ul><h3 id="Git-配置"><strong>Git 配置</strong></h3><p>配置用户名、邮箱:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name (user_name)</span><br><span class="line">git config --global user.email (user_email)</span><br></pre></td></tr></table></figure><p>Git 使用教程参考以下网址:</p><p><a href="https://git-scm.com/docs">Git Documentation</a></p><h4 id="NTFS-磁盘无法挂载"><strong>NTFS 磁盘无法挂载</strong></h4><p>一般来讲是该磁盘未正确卸载(如热插拔)、Windows 开启了快速启动,或者进行了优化磁盘等操作导致的,此时 NTFS 分区会被标记为 <code>dirty</code></p><p>可以尝试强制挂载,需要加上 <code>force</code> 选项,如:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> mount -t ntfs3 -o force /dev/(partition_name) /run/media/(user_name)/(partition_name)</span><br></pre></td></tr></table></figure><p>临时解决这个问题需要下载 AUR 软件包 <code>ntfsprogs-ntfs3</code> 以执行硬盘 NTFS 分区修复:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">paru -S ntfsprogs-ntfs3</span><br><span class="line"><span class="built_in">sudo</span> ntfsfix -d /dev/(partition_name)</span><br></pre></td></tr></table></figure><p>再重新挂载即可:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> mount -t ntfs3 /dev/(partition_name) /run/media/(user_name)/(partition_name)</span><br></pre></td></tr></table></figure><p>根本的解决方案是在 Windows 中使用 <code>chkdsk</code> 修复,注意这里要使用盘符,以 <code>E:</code> 盘为例:</p><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chkdsk /F E:</span><br></pre></td></tr></table></figure><h3 id="系统分区改变导致时进入-GRUB-Rescue-模式"><strong>系统分区改变导致时进入 GRUB Rescue 模式</strong></h3><p>此时会在开机时显示如下内容而无法进入选择系统的界面:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">error: no such partition.</span><br><span class="line">Entering rescue mode...</span><br><span class="line">grub rescue></span><br></pre></td></tr></table></figure><p>此时执行 <code>ls</code>,显示如下:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">((hd_number)) ((hd_number),(gpt_number))</span><br></pre></td></tr></table></figure><p>其中硬盘编号 <code>(hd_number)</code> 从小到大排列(最小值为 0),分区编号 <code>(gpt_number)</code> 从大到小排列(最小值为 1)</p><p>找到安装 Arch Linux 的分区 <code>((hd_number),(gpt_number))</code>,此时执行 <code>ls((hd_number),(gpt_number))</code> 应该能看到 Arch Linux 根目录下的所有文件和文件夹</p><p>手动修改启动分区所在的位置:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">set</span> prefix=((hd_number),(gpt_number))/boot/grub</span><br></pre></td></tr></table></figure><p>执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">insmod normal</span><br><span class="line">normal</span><br></pre></td></tr></table></figure><p>即可进入 GRUB 界面,从这里登录 Arch Linux 系统,登录后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><p>以修复启动项</p><h3 id="调整文件夹名称为英文"><strong>调整文件夹名称为英文</strong></h3><p>修改 <code>~/.config/user-dirs.dirs</code>,改为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">XDG_DESKTOP_DIR=<span class="string">"<span class="variable">$HOME</span>/Desktop"</span></span><br><span class="line">XDG_DOCUMENTS_DIR=<span class="string">"<span class="variable">$HOME</span>/Documents"</span></span><br><span class="line">XDG_DOWNLOAD_DIR=<span class="string">"<span class="variable">$HOME</span>/Downloads"</span></span><br><span class="line">XDG_MUSIC_DIR=<span class="string">"<span class="variable">$HOME</span>/Music"</span></span><br><span class="line">XDG_PICTURES_DIR=<span class="string">"<span class="variable">$HOME</span>/Pictures"</span></span><br><span class="line">XDG_PUBLICSHARE_DIR=<span class="string">"<span class="variable">$HOME</span>/Public"</span></span><br><span class="line">XDG_TEMPLATES_DIR=<span class="string">"<span class="variable">$HOME</span>/Templates"</span></span><br><span class="line">XDG_VIDEOS_DIR=<span class="string">"<span class="variable">$HOME</span>/Videos"</span></span><br></pre></td></tr></table></figure><p>并在 Dolphin 中按照上面的说明更改文件名</p><h3 id="蓝牙连接设置"><strong>蓝牙连接设置</strong></h3><h4 id="命令行连接蓝牙"><strong>命令行连接蓝牙</strong></h4><p>一般蓝牙设备可以在 Plasma 桌面的图形界面下连接,如果连接失败,可以选择用命令行界面连接和排查错误</p><p>首先要安装 <code>bluez-utils</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S bluez-utils</span><br></pre></td></tr></table></figure><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bluetoothctl</span><br></pre></td></tr></table></figure><p>进入交互模式,此时命令前缀变为 <code>[bluetooth]#</code>(<code>bluetooth</code> 可能替换为已连接设备的名字),连接步骤如下:</p><ul><li>使用命令 <code>scan on</code> 去搜索发现所有可配对的设备,找到要配对的设备的 MAC 地址 <code>(MAC_address)</code>,一般是 <code>XX:XX:XX:XX:XX:XX</code> 的形式</li><li>使用命令 <code>pair (MAC_address)</code> 配对设备,可能需要输入 PIN 密码</li><li>使用命令 <code>trust (MAC_address)</code> 将设备添加到信任列表</li><li>使用命令 <code>connect (MAC_address)</code> 建立连接</li><li>使用命令 <code>exit</code> 退出</li></ul><h4 id="SONY-WH-1000XM3-耳机的蓝牙连接"><strong>SONY WH-1000XM3 耳机的蓝牙连接</strong></h4><p>长按耳机电源键约 7 秒即可进入配对模式,可以在蓝牙中配对</p><h4 id="Logitech-多设备鼠标的蓝牙连接"><strong>Logitech 多设备鼠标的蓝牙连接</strong></h4><p>同一台电脑的 Windows 系统和 Linux 系统在鼠标上会被识别为两个设备</p><p>如果 Windows 系统被识别为设备 1,需要多设备切换的按钮(一般是一个在滚轮后或鼠标底部的圆形按钮)切换至设备 2</p><p>长按圆形按钮直到灯 2 快速闪烁进入配对模式,可以在蓝牙中配对</p><p>如果 Logitech 鼠标配对后屏幕光标无法移动,一般可以直接删除设备重新配对,如果仍然失败则按照“命令行连接蓝牙”一节操作</p><h3 id="解决登录-Root-用户没有声音的问题"><strong>解决登录 Root 用户没有声音的问题</strong></h3><p>首先创建一个新文件夹:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> <span class="built_in">mkdir</span> /root/.config/autostart/</span><br></pre></td></tr></table></figure><p>在该文件夹下创建一个 <code>pulseaudio.desktop</code> 文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /root/.config/autostart/pulseaudio.desktop</span><br></pre></td></tr></table></figure><p>写入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[Desktop Entry]</span><br><span class="line">Encoding=UTF-8</span><br><span class="line">Type=Application</span><br><span class="line">Name=pulseaudio</span><br><span class="line">Exec=pulseaudio --start --log-target=syslog</span><br><span class="line">StartupNotify=<span class="literal">false</span></span><br><span class="line">Terminal=<span class="literal">true</span></span><br><span class="line">Hidden=<span class="literal">false</span></span><br></pre></td></tr></table></figure><p>保存,重启即可</p><h3 id="解决-Gwenview-无法打开大型图片的问题"><strong>解决 Gwenview 无法打开大型图片的问题</strong></h3><p>在应用程序启动器中找到 Gwenview,右键点击,选择“编辑应用程序”</p><p>找到“应用程序”,编辑环境变量,加入 <code>QT_IMAGEIO_MAXALLOC=(size)</code></p><p>默认值是 256,无法打开大型图片时要将其改成更大的值,如 65536</p><h3 id="切换图形化界面和命令行界面"><strong>切换图形化界面和命令行界面</strong></h3><p>登录时默认进入的是图形化界面,有时候开机后黑屏是图形化界面显示不出来所致,此时可以按快捷键 <code>Ctrl+Alt+Fn+(F2~F6)</code> 进入 <code>tty2 ~ tty6</code> 的任何一个命令行 TTY 界面</p><p>注意此时需要手动输入用户名和密码</p><p>在命令行界面解决问题后,按快捷键 <code>Ctrl+Alt+Fn+F1</code> 可以转换回 TTY1 图形化界面</p><h3 id="电源管理方案"><strong>电源管理方案</strong></h3><h4 id="使用图形界面"><strong>使用图形界面</strong></h4><p>这需要使用 <code>powerdevil</code> 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S powerdevil</span><br></pre></td></tr></table></figure><p>之后即可在“系统设置 >> 系统 >> 电源管理”中设置电源方案</p><h4 id="使用命令行工具"><strong>使用命令行工具</strong></h4><p>这需要 <code>tlp</code> 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S tlp</span><br><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> tlp</span><br></pre></td></tr></table></figure><p>tlp 的设置文件在 <code>/etc/tlp.conf</code></p><p>若需要更改 CPU 性能设置,修改以下位置:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">CPU_MIN_PERF_ON_AC=0</span><br><span class="line">CPU_MAX_PERF_ON_AC=100</span><br><span class="line">CPU_MIN_PERF_ON_BAT=0</span><br><span class="line">CPU_MAX_PERF_ON_BAT=30</span><br></pre></td></tr></table></figure><p>若需要更改 CPU 睿频设置,修改以下位置:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">CPU_BOOST_ON_AC=1</span><br><span class="line">CPU_BOOST_ON_BAT=0</span><br></pre></td></tr></table></figure><p>保存、关闭,在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tlp start</span><br></pre></td></tr></table></figure><p><strong>不需要高性能的时候可以关闭睿频,这样可以大幅增加续航、减少发热</strong></p><h3 id="切换软件包仓库"><strong>切换软件包仓库</strong></h3><p>参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Official_repositories">Official repositories – ArchWiki</a></p><h4 id="启用-multilib-仓库"><strong>启用 multilib 仓库</strong></h4><p>multilib 包含着32位的软件和链接库,可以用于在64位系统上运行和构建32位软件,例如 <code>wine</code> 软件包等</p><p>如果想启用 multilib 仓库,请在 <code>/etc/pacman.conf</code> 文件中取消 <code>[multilib]</code> 段落的注释:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[multilib]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><p>然后更新系统:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Syu</span><br></pre></td></tr></table></figure><h4 id="启用测试仓库(可选)"><strong>启用测试仓库(可选)</strong></h4><p>测试仓库并不是“最新”软件包的仓库。测试仓库的目的是提供一个即将被放入主软件仓库的软件包的集散地。软件包维护者(和普通用户)可以访问并测试这些软件包以确保软件包没有问题。当位于测试仓库的软件包被测试无问题后,即可被移入主仓库。</p><p>请同时启用 core-testing 和 extra-testing 仓库,即在 <code>/etc/pacman.conf</code> 文件中取消 <code>[core-testing]</code> 和 <code>[extra-testing]</code> 段落的注释:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[core-testing]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[extra-testing]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><p>由于并不是所有的主仓库软件包都在测试仓库中有相应的版本,core 和 extra 主仓库应该保留,并保证相应的测试仓库在主仓库的前面,即:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[core-testing]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[core]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[extra-testing]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[extra]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><h4 id="启用-kde-unstable-仓库(可选)"><strong>启用 kde-unstable 仓库(可选)</strong></h4><p>kde-unstable 仓库包含包含 KDE Plasma 和应用程序的测试版本</p><p>如果想启用 kde-unstable 仓库,请在 <code>/etc/pacman.conf</code> 文件中添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[kde-unstable]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><p>此时应该启用 core-testing 和 extra-testing 仓库,并保证 <code>[kde-unstable]</code> 在其它所有仓库的前面,即:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">[kde-unstable]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[core-testing]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[core]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[extra-testing]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br><span class="line"></span><br><span class="line">[extra]</span><br><span class="line">Include = /etc/pacman.d/mirrorlist</span><br></pre></td></tr></table></figure><p>然后更新系统:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -Syu</span><br></pre></td></tr></table></figure><h3 id="切换到其它内核(可选)"><strong>切换到其它内核(可选)</strong></h3><p>Arch Linux 和 AUR 上可选的内核可以参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Kernel">Kernel – ArchWiki</a></p><p>以 <code>linux-lts</code> 为例,首先下载 <code>linux-lts</code> 内核:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S linux-lts</span><br></pre></td></tr></table></figure><p>可以选择保留或删除原有内核,若保留内核,重启后可以选择从任何一个内核启动</p><p>之后重新生成 GRUB 文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><p><strong>如果不重新生成 GRUB 文件会因为找不到内核而无法启动</strong></p><h3 id="应用程序的快捷键配置(可选)"><strong>应用程序的快捷键配置(可选)</strong></h3><p>应用程序的快捷键配置在:</p><p>系统设置 >> 键盘 >> 快捷键</p><p>若没有想要的应用程序,可以点击“新增”</p><h3 id="添加打印机(可选)"><strong>添加打印机(可选)</strong></h3><p>需要下载 <code>system-config-printer</code> 和 <code>cups</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S system-config-printer cups</span><br></pre></td></tr></table></figure><p>并启用 <code>cups</code> 服务:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> --now cups</span><br></pre></td></tr></table></figure><p>此时在“系统设置 >> 已连接的设备 >> 打印机”中添加打印机</p><p>如果无法自动发现,需要选择“手动配置”,输入打印机的 IPP 地址如:(注意不要遗漏中间的 <code>://</code>)</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ipp://xxx.xxx.xxx.xxx</span><br></pre></td></tr></table></figure><p>再选择打印机的制造商和型号,即可添加打印机,添加后可以打印测试页或自检页确认是否添加成功</p><h3 id="硬件视频加速(可选)"><strong>硬件视频加速(可选)</strong></h3><p>如果想要获得硬件视频加速,可以下载 <code>intel-media-driver</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S intel-media-driver</span><br></pre></td></tr></table></figure><p>具体教程参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Hardware_video_acceleration">Hardware video acceleration – ArchWiki</a></p><h3 id="为-pacman-启用多线程下载(可选)"><strong>为 pacman 启用多线程下载(可选)</strong></h3><p>执行下面的命令下载 <a href="https://github.com/axel-download-accelerator/axel">axel</a></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S axel</span><br></pre></td></tr></table></figure><p>编辑 <code>/etc/pacman.conf</code> 文件(在第 21 行):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">XferCommand = /usr/bin/axel -n 10 -o %o %u</span><br></pre></td></tr></table></figure><p>编辑 <code>/etc/makepkg.conf</code> 文件(在第 12-17 行):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">DLAGENTS=(<span class="string">'file::/usr/bin/curl -gqC - -o %o %u'</span></span><br><span class="line"><span class="string">'ftp::/usr/bin/axel -n 10 -o %o %u'</span></span><br><span class="line"><span class="string">'http::/usr/bin/axel -n 10 -o %o %u'</span></span><br><span class="line"><span class="string">'https::/usr/bin/axel -n 10 -o %o %u'</span></span><br><span class="line"><span class="string">'rsync::/usr/bin/rsync --no-motd -z %u %o'</span></span><br><span class="line"><span class="string">'scp::/usr/bin/scp -C %u %o'</span>)</span><br></pre></td></tr></table></figure><p><strong>注意某些软件包如 <code>rider</code> 和 <code>qqmusic-bin</code> 等下载源不支持 axel,启用多线程下载后可能会导致构建失败</strong></p><h3 id="重新开启-Secure-Boot(未测试)"><strong>重新开启 Secure Boot(未测试)</strong></h3><p>如果想在开启 Secure Boot 的情况下登录进 Arch Linux,可以使用经过微软签名的 PreLoader 或者 shim,然后在 UEFI 设置中将 Secure Boot 级别设置为 Microsoft & 3rd Party CA</p><p>具体教程参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot#Microsoft_Windows">Secure Boot – ArchWiki</a></p><h2 id="一些有用的命令总结"><strong>一些有用的命令总结</strong></h2><h3 id="获取设备信息"><strong>获取设备信息</strong></h3><h4 id="简要信息"><strong>简要信息</strong></h4><p>可以使用能显示系统图标的 <code>fastfetch</code>,在终端中输入:(需要下载 <code>fastfetch</code> 软件包)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">fastfetch</span><br></pre></td></tr></table></figure><p>或者使用功能更强大的 <code>inxi</code>:(需要在 AUR 中下载 <code>inxi</code> 软件包)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> inxi -b</span><br></pre></td></tr></table></figure><h4 id="详细信息"><strong>详细信息</strong></h4><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> inxi -Fa</span><br></pre></td></tr></table></figure><h4 id="内核版本"><strong>内核版本</strong></h4><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">uname</span> -a</span><br></pre></td></tr></table></figure><h4 id="操作系统版本"><strong>操作系统版本</strong></h4><p>在终端中输入:(需要 <code>lsb-release</code> 软件包)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lsb_release -a</span><br></pre></td></tr></table></figure><h3 id="当前目录"><strong>当前目录</strong></h3><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">pwd</span></span><br></pre></td></tr></table></figure><p>可以获得当前目录的绝对路径</p><h3 id="命令的说明文档"><strong>命令的说明文档</strong></h3><p>在终端中输入:(需要 <code>man-db</code> 软件包)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">man (<span class="built_in">command</span>)</span><br></pre></td></tr></table></figure><h3 id="文件权限与属性"><strong>文件权限与属性</strong></h3><h4 id="查看文件权限与属性"><strong>查看文件权限与属性</strong></h4><p>查看当前目录下所有文件(包括目录文件,即文件夹)的权限与属性:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -l</span><br></pre></td></tr></table></figure><p>输出部分开头由 10 位字母或 <code>-</code> 符号组成,如 <code>drwxr-xr-x</code></p><p>第一个字母代表文件类型,<code>d</code> 表示目录文件,<code>-</code> 表示普通文件</p><p>后面 9 个字母代表文件的权限:第 1-3 个字母代表所有者对文件的权限,第 4-6 个字母代表用户组对该文件的权限,第 7-9 个字母代表所有其他用户对该文件的权限</p><p>其中 <code>r</code> 代表读取权限,<code>w</code> 代表修改权限,<code>x</code> 代表执行权限(非可执行文件,如文本文件,本身就没有执行权限),<code>-</code> 代表没有该类型的权限</p><h4 id="修改文件权限"><strong>修改文件权限</strong></h4><p>在终端里使用 <code>chmod</code> 命令可以修改文件权限:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> (<span class="built_in">who</span>)=(permissions) (file_name)</span><br></pre></td></tr></table></figure><p>其中的 <code>(who)</code> 是一个或者多个字母,可以是 <code>u</code>(所有者)、<code>g</code>(用户组)、<code>o</code>(所有其他用户)、<code>a</code>(以上所有,等价于 <code>ugo</code>)</p><p>权限 <code>(permissions)</code> 用 <code>r</code>、<code>w</code>、<code>x</code> 表示</p><p>中间的 <code>=</code> 符号是覆盖性的,<code>chmod</code> 命令允许使用 <code>+</code> 或 <code>-</code> 从现有集合中添加和减去权限,例如:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> u+x (file_name)</span><br></pre></td></tr></table></figure><p>可以给文件添加所有者的可执行权限</p><p><code>chmod</code> 也可以用数字来设置权限,此时 <code>r=4</code>、<code>w=2</code>、<code>x=1</code>,如 <code>rwxr-xr-x</code> 等于 <code>755</code>,这样可以同时编辑所有者、用户组和其他用户的权限:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> 755 (file_name)</span><br></pre></td></tr></table></figure><p>大多数目录被设置为 <code>755</code>,以允许所有者读取、写入和执行,但拒绝被其他所有人写入</p><p>非可执行的文件通常是 <code>644</code>,以允许所有者读取和写入,但允许其他所有人读取,可执行文件则为 <code>744</code></p><p>如果要递归修改,可以加入 <code>-R</code> 参数</p><p>更多设置和用法参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/File_permissions_and_attributes">File permissions and attributes – ArchWiki</a></p><h4 id="修改文件用户组"><strong>修改文件用户组</strong></h4><p>在终端里使用 <code>chgrp</code> 命令可以修改文件所属的用户组:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chgrp</span> (group_name) (file_name)</span><br></pre></td></tr></table></figure><p>如果要递归修改,可以加入 <code>-R</code> 参数</p><h4 id="修改文件所有者"><strong>修改文件所有者</strong></h4><p>在终端里使用 <code>chown</code> 命令可以修改文件所有者:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chown</span> (user_name) (file_name)</span><br></pre></td></tr></table></figure><p>如果要递归修改,可以加入 <code>-R</code> 参数</p><p>也可以同时修改所有者和用户组:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chown</span> (user_name):(group_name) (file_name)</span><br></pre></td></tr></table></figure><h3 id="命令行进程查看器"><strong>命令行进程查看器</strong></h3><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">top</span><br></pre></td></tr></table></figure><p>或者使用功能更强大,有颜色高亮的 <code>htop</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">htop</span><br></pre></td></tr></table></figure><h3 id="内存使用情况"><strong>内存使用情况</strong></h3><p><code>free</code> 显示系统中已用和未用的物理内存和交换内存、共享内存和内核使用的缓冲区的总和</p><p>在终端中输入:(默认单位是 KiB,即 1024 字节)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">free</span><br></pre></td></tr></table></figure><p><strong>Linux 的内存策略和使用指南可以参考这个网站:<a href="https://www.linuxatemyram.com/">Linux ate my RAM</a></strong></p><h3 id="上一次关机的系统日志"><strong>上一次关机的系统日志</strong></h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">journalctl -rb -1</span><br></pre></td></tr></table></figure><h3 id="查看并转换编码"><strong>查看并转换编码</strong></h3><p>查看编码的命令为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">file -i (file_name)</span><br></pre></td></tr></table></figure><p>其中 <code>charset</code> 一栏的输出即为文件编码</p><p>转换编码可以使用系统预装的 <code>iconv</code>,方法为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">iconv -f (from_encoding) -t (to_encoding) (from_file_name) -o (to_file_name)</span><br></pre></td></tr></table></figure><p>该方法适合对文本文件转换编码,对 ZIP 压缩包和 PDF 文件等二进制文件则无法使用</p><p><code>iconv</code> 支持的编码格式可以用 <code>iconv -l</code> 查看</p><h3 id="转换图片格式"><strong>转换图片格式</strong></h3><p>这需要 <code>imagemagick</code> 软件包,它提供了 <code>magick</code> 命令</p><p>例如批量将图片从 PNG 格式转换为 JPG 格式:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -1 *.png | xargs -n 1 bash -c <span class="string">'magick "$0" "${0%.png}.jpg"'</span></span><br></pre></td></tr></table></figure><h3 id="批量裁剪图片"><strong>批量裁剪图片</strong></h3><p>同样需要使用 <code>imagemagick</code> 软件包,以下命令将原始图片裁剪为宽度为 W 像素、长度为 L 像素的图片:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">magick mogrify -crop Wxl+20+20 (image_name)</span><br></pre></td></tr></table></figure><h3 id="PDF-与图片之间的转换"><strong>PDF 与图片之间的转换</strong></h3><h4 id="将-PDF-转换为多个图片"><strong>将 PDF 转换为多个图片</strong></h4><p>第一种方法是用 <code>poppler</code> 软件包提供的 <code>pdftoppm</code> 命令:(推荐)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pdftoppm -png -r (resolution) (pdf_name) (image_name)</span><br></pre></td></tr></table></figure><p>分辨率 <code>(resolution)</code> 默认为 150 DPI,可以调整为更高的 300、600 等</p><p>转化为 JPG 图片的命令为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pdftoppm -jpeg -r (resolution) (pdf_name) (image_name)</span><br></pre></td></tr></table></figure><p>第二种方法是用 <code>imagemagick</code> 软件包提供的 <code>magick</code> 命令:(图片质量不如第一种方法)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">magick -density (resolution) -quality 100 (pdf_name) (image_name)</span><br></pre></td></tr></table></figure><p>分辨率 <code>(resolution)</code> 至少为 300(单位为 DPI),压缩质量推荐选择 100,<code>(image_name)</code> 加入扩展名即可自动按照扩展名输出相应格式的图片</p><h4 id="将多个图片转换为-PDF"><strong>将多个图片转换为 PDF</strong></h4><p>使用 <code>img2pdf</code> 软件包提供的 <code>img2pdf</code> 命令:(强烈推荐,速度快)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">img2pdf -o (pdf_name) (image_name)</span><br></pre></td></tr></table></figure><p>这个命令还可以指定 PDF 页面大小:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">img2pdf -o (pdf_name) --pagesize (page_size) (image_name)</span><br></pre></td></tr></table></figure><p>其中 <code>(page_size)</code> 可以输入 <code>A4</code>、<code>B5</code>、<code>Letter</code> 等,也可以输入自定义的数字如 <code>10cmx15cm</code></p><h3 id="查找命令"><strong>查找命令</strong></h3><p><code>grep</code> 命令的用法为在文件或命令输出中查找字符串,例如:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grep (pattern) (file_pattern)</span><br></pre></td></tr></table></figure><p>即为在当前目录文件名符合 <code>file_pattern</code> 的文件中查找字符串 <code>pattern</code></p><p>又例如:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pamac list | grep (pattern)</span><br></pre></td></tr></table></figure><p>可以查询已安装的软件包中名字含有 <code>pattern</code> 的软件包</p><h3 id="获取命令执行的时间"><strong>获取命令执行的时间</strong></h3><p>使用 <code>time</code> 命令在任何命令前面可以获取命令执行的时间:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">time (<span class="built_in">command</span>)</span><br></pre></td></tr></table></figure><p>输出有三行:<code>real</code> 一行是命令执行的总时间,<code>user</code> 一行是指令执行时在用户态(user mode)所花费的时间,<code>sys</code> 一行是指令执行时在内核态(kernel mode)所花费的时间</p><h3 id="命令行比较两个文件"><strong>命令行比较两个文件</strong></h3><p>可以用 Linux 自带的 <code>diff</code> 命令,它可以逐行比较两个文件(如果是二进制文件则直接输出是否存在差异):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">diff (file_name_1) (file_name_2)</span><br></pre></td></tr></table></figure><p>这里的文件也可以换成路径,详细用法可以用 <code>diff --help</code> 查询</p><h3 id="批量更改文件名"><strong>批量更改文件名</strong></h3><p>可以用 Linux 自带的 <code>rename</code> 命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rename -- <span class="string">"(old_name)"</span> <span class="string">"(new_name)"</span> (files)</span><br></pre></td></tr></table></figure><p>这里的参数 <code>--</code> 是为了防止在 <code>"old_name"</code> 中出现连字符导致识别错误(将其识别为参数)而添加的</p><p>例如将本文件夹下所有文件的文件名中空格改为下划线,即执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rename -- <span class="string">" "</span> <span class="string">"_"</span> ./*</span><br></pre></td></tr></table></figure><p>详细用法可以用 <code>rename --help</code> 查询</p><h3 id="批量更改文件"><strong>批量更改文件</strong></h3><p>推荐使用 <code>sed</code> 命令处理:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sed -ie <span class="string">'s/(old_string)/(new_string)/g'</span> (files)</span><br></pre></td></tr></table></figure><h3 id="将-Tab-替换为空格"><strong>将 Tab 替换为空格</strong></h3><p>推荐使用 <code>expand</code> 命令,它可以自动将不同长度的 Tab 替换成对应数量的空格,保证最终文字依然是对齐的</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">expand</span> -t 4 (file_name)</span><br></pre></td></tr></table></figure><p>这样可以将文件中所有的 Tab 替换为 4 个空格(这里的 4 也可以改为其它数字),此时会把替换后的文件内容输出到命令行终端,需要复制到源文件内容中</p><p>替换 Tab 也可以使用 Vim 中的 <code>retab</code> 功能,用 Vim 打开文件后默认进入命令模式,输入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">:set tabstop=4</span><br><span class="line">:set expandtab</span><br><span class="line">:%retab!</span><br></pre></td></tr></table></figure><p>第一步设定一个 Tab 的长度等于 4 个空格,第二步设定从 Tab 替换为空格(反之则为 <code>:set noexpandtab</code>),第三步将文件中所有的 Tab 替换为对应数量的空格</p><h3 id="归档、压缩与解压缩"><strong>归档、压缩与解压缩</strong></h3><p>参考以下网址:</p><p><a href="https://wiki.archlinux.org/title/Archiving_and_compression">Archiving and compression – ArchWiki</a></p><h4 id="zip-格式"><strong>zip 格式</strong></h4><p>压缩需要用 <code>zip</code> 命令(需要单独安装 <code>zip</code> 软件包):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">zip (archive_name).zip (file_name)</span><br></pre></td></tr></table></figure><p>这里的 <code>(file_name)</code> 可以是单个或多个文件,下同</p><p>解压默认使用 <code>unzip</code> 命令(需要单独安装 <code>unzip</code> 软件包):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">unzip (archive_name).zip</span><br></pre></td></tr></table></figure><p>如果压缩文件编码不是 UTF-8,可能会导致文件名乱码,此时可以指定为其它编码例如 GBK 编码:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">unzip -O gbk (archive_name).zip</span><br></pre></td></tr></table></figure><p>这里建议使用 <code>unar</code>(由 <code>unarchiver</code> 软件包提供)解压,因为它可以自动检测文件编码:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">unar (archive_name).zip</span><br></pre></td></tr></table></figure><h4 id="rar-格式"><strong>rar 格式</strong></h4><p>压缩需要用 <code>rar</code> 命令(需要从 AUR 安装 <code>rar</code> 软件包):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rar a (archive_name).rar (file_name)</span><br></pre></td></tr></table></figure><p>解压时则将参数 <code>a</code> 换成 <code>x</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rar x (archive_name).rar</span><br></pre></td></tr></table></figure><p>也可以用 <code>unarchiver</code> 软件包提供的 <code>unar</code> 命令解压:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">unar (archive_name).rar</span><br></pre></td></tr></table></figure><h4 id="tar-格式"><strong>tar 格式</strong></h4><p>归档文件(不压缩)时使用 <code>tar</code> 命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -cvf (archive_name).tar (file_name)</span><br></pre></td></tr></table></figure><p>解开归档文件时使用:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -xvf (archive_name).tar</span><br></pre></td></tr></table></figure><p>此处的 <code>-c</code> 参数表示创建归档文件(create);<code>-v</code> 参数表示显示详细信息(verbose),即被归档或解压的每一个文件的名字;<code>-f</code> 参数表示归档文件的文件名(不是被归档文件的文件名),解开时则为压缩包的文件名;<code>-x</code> 参数表示解开归档文件(extract)</p><h4 id="tar-gz-格式"><strong>tar.gz 格式</strong></h4><p>压缩命令:(其中 <code>-z</code> 表示通过 gzip 压缩或解压)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -czvf (archive_name).tar.gz (file_name)</span><br></pre></td></tr></table></figure><p>解压命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -xzvf (archive_name).tar.gz</span><br></pre></td></tr></table></figure><p>实际上 <code>tar</code> 可以自动识别压缩格式,所以可以使用如下命令(下同):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -xvf (archive_name).tar.gz</span><br></pre></td></tr></table></figure><h4 id="tar-xz-格式"><strong>tar.xz 格式</strong></h4><p>压缩命令:(其中 <code>-J</code> 表示通过 xz 压缩或解压)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -cJvf (archive_name).tar.xz (file_name)</span><br></pre></td></tr></table></figure><p>解压命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -xJvf (archive_name).tar.xz</span><br></pre></td></tr></table></figure><h4 id="tar-bz2-格式"><strong>tar.bz2 格式</strong></h4><p>压缩命令:(其中 <code>-j</code> 表示通过 bzip2 压缩或解压)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -cjvf (archive_name).tar.bz2 (file_name)</span><br></pre></td></tr></table></figure><p>解压命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -xjvf (archive_name).tar.bz2</span><br></pre></td></tr></table></figure><h4 id="gz-格式"><strong>gz 格式</strong></h4><p>压缩命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gzip (file_name)</span><br></pre></td></tr></table></figure><p>解压命令:(<code>gzip -d</code> 也可以替换为 <code>gunzip</code>)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gzip -d (file_name).gz</span><br></pre></td></tr></table></figure><p>例如 gzip 压缩的 FITS 文件,其后缀是 <code>.fits.gz</code>,此时可以用 <code>gzip -d</code> 解压,得到 <code>.fits</code> 格式的文件</p><h3 id="设置命令别名"><strong>设置命令别名</strong></h3><p>在 <code>~/.bashrc</code> 中添加一句 <code>alias (new_command)=(old-command)</code>,这样直接输入 <code>new_command</code> 即等效于输入 <code>old_command</code></p><h2 id="美化"><strong>美化</strong></h2><h3 id="自定义壁纸"><strong>自定义壁纸</strong></h3><p>桌面壁纸可以在 <a href="https://www.pling.com/">pling.com</a> 下载</p><p>KDE Plasma 每个版本的壁纸可以在这里找到:</p><p><a href="https://github.com/KDE/plasma-workspace-wallpapers">Plasma Workspace Wallpapers – KDE</a></p><p>默认的壁纸保存位置为 <code>/usr/share/wallpapers/</code></p><p>还可以使用包管理器下载壁纸</p><p>右键点击桌面得到桌面菜单,点击“配置桌面和壁纸”即可选择想要的壁纸,位置建议选择“缩放并裁剪”</p><h3 id="SDDM-设置-2"><strong>SDDM 设置</strong></h3><h4 id="SDDM-修改为中文"><strong>SDDM 修改为中文</strong></h4><p>创建一个新文件:<code>/etc/sddm.locale</code>,写入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">LANG="zh_CN.UTF-8"</span><br></pre></td></tr></table></figure><p>再编辑 <code>/lib/systemd/system/sddm.service</code>,在 <code>[Service]</code> 一节内加入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">EnvironmentFile=-/etc/sddm.locale</span><br></pre></td></tr></table></figure><p>前面的 <code>-</code> 号表示即使 <code>/etc/sddm.locale</code> 不存在,也不会报错</p><h4 id="SDDM-时间显示调整为-24-小时制"><strong>SDDM 时间显示调整为 24 小时制</strong></h4><p>更改 <code>/usr/share/sddm/themes/(theme_name)/components/Clock.qml</code> 或 <code>/usr/share/sddm/themes/(theme_name)/Clock.qml</code> 中的 <code>Qt.formatTime</code> 一行:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">text: Qt.formatTime(timeSource.data["Local"]["DateTime"])</span><br></pre></td></tr></table></figure><p>将其改为:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">text: Qt.formatTime(timeSource.data["Local"]["DateTime"], "H:mm:ss")</span><br></pre></td></tr></table></figure><p>保存重启即可</p><h3 id="Plymouth-启动屏幕动画"><strong>Plymouth 启动屏幕动画</strong></h3><p>编辑 <code>/etc/default/grub</code>,找到一行:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GRUB_CMDLINE_LINUX_DEFAULT</span><br></pre></td></tr></table></figure><p>加入参数 <code>splash</code></p><p>最后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><p>再重启即可</p><p>默认的启动屏幕动画可以在“系统设置 >> 外观 >> 启动屏幕”更改</p><p>Plymouth 动画的缩放设置需要更改 <code>/etc/plymouth//plymouthd.conf</code></p><p>在 <code>[Daemon]</code> 一节中加入一行 <code>DeviceScale=2</code></p><p>执行 <code>sudo mkinitcpio -P</code> 再重启即可</p><h3 id="主题-Mac-风格美化(可选)"><strong>主题 Mac 风格美化(可选)</strong></h3><p>参考以下网址:</p><p><a href="https://www.cnblogs.com/luoshuitianyi/p/10587788.html">KDE 桌面的 Mac 化</a></p><p><a href="https://acherstyx.github.io/2020/06/30/KDE%E6%A1%8C%E9%9D%A2%E7%BE%8E%E5%8C%96%E6%8C%87%E5%8D%97/">KDE 桌面美化指南</a></p><p>其中 Plasma 主题、GTK 主题和图标主题推荐选择:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Plasma Theme: Mojave-CT</span><br><span class="line">GTK Theme: Mojave-light-alt [GTK2/3]</span><br><span class="line">Icon Theme: La Capitaine</span><br></pre></td></tr></table></figure><p>Latte-Dock 的推荐设置:</p><p>行为:位置 >> 底部,可见性 >> 自动隐藏,延迟 >> 显示 >> none</p><p>外观:绝对大小 >> 96,背景大小 >> 10%</p><p><strong>不想使用 Mac 风格主题但又想使用浅色主题时,可以使用 KDE 官方主题 Breeze Light,并将终端(Konsole 和 Yakuake)主题改为“白底黑字”,背景透明度选择 20%</strong></p><h3 id="光标主题设置"><strong>光标主题设置</strong></h3><p>已安装的光标主题可以通过以下命令查看:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find /usr/share/icons ~/.local/share/icons ~/.icons -<span class="built_in">type</span> d -name <span class="string">"cursors"</span></span><br></pre></td></tr></table></figure><p>备用的光标主题可以在 <code>/usr/share/icons/default/index.theme</code> 设置:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[Icon Theme]</span><br><span class="line">Inherits=(cursor_theme_name)</span><br></pre></td></tr></table></figure><p>默认的备选是 <code>Adwaita</code>,这可能导致光标主题的不统一,可以改为 <code>breeze_cursors</code></p><h3 id="终端字体效果配置"><strong>终端字体效果配置</strong></h3><p>打开终端 Konsole:</p><p>设置 >> 编辑当前方案 >> 外观 >> 复杂文本布局 >> 双向文字渲染</p><p>默认关闭连字,勾选“单词模式”和“ASCII 字符”(不勾选“对整个单词使用相同的属性”)可以开启连字</p><h3 id="bash-配置提示符变量"><strong>bash 配置提示符变量</strong></h3><p>bash 的配置文件在 <code>~/.bashrc</code>,默认提示符变量 PS1 可以设置为如下内容:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">PS1=<span class="string">"[\e[0;36m\u\e[0m @ \e[0;32m\h\e[0m \W] (\e[0;35m\t\e[0m)\n\e[1;31m\$\e[0m "</span></span><br></pre></td></tr></table></figure><p>显示了用户名、主机名、时间、是否为超级用户,并带有颜色高亮</p><p>说明文档参见以下网站:</p><p><a href="https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt">Controlling the Prompt – Bash Manual</a></p><p>更多的 PS1 内容和颜色设置可以在这个网站进行自定义:</p><p><a href="https://bashrcgenerator.com/">bashrc PS1 generator</a></p><h3 id="bash-配置-blesh"><strong>bash 配置 blesh</strong></h3><p><a href="https://github.com/akinomyoga/ble.sh">ble.sh</a> 是一个使用纯 bash 编写的软件,可以提供代码高亮、自动补全等功能,可以在 AUR 中下载稳定版本:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S blesh</span><br></pre></td></tr></table></figure><p>或者开发者版本:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S blesh-git</span><br></pre></td></tr></table></figure><p>下载后,需要在 <code>.bashrc</code> 文件开头添加:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[ $- == *i* ]] && <span class="built_in">source</span> /usr/share/blesh/ble.sh --noattach</span><br></pre></td></tr></table></figure><p>并在末尾添加:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[[ <span class="variable">${BLE_VERSION-}</span> ]] && ble-attach</span><br></pre></td></tr></table></figure><p>之后在用户目录 <code>/home/(user_name)</code> 下创建文件 <code>.blerc</code>,写入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">bleopt canvas_winch_action=redraw-prev</span><br><span class="line">bleopt exec_elapsed_enabled=1</span><br></pre></td></tr></table></figure><p>更多设置和用法参考以下网址:</p><p><a href="https://github.com/akinomyoga/ble.sh">ble.sh – GitHub</a></p><h3 id="zsh-与-Oh-My-Zsh-配置"><strong>zsh 与 Oh-My-Zsh 配置</strong></h3><p>安装 zsh:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S zsh</span><br></pre></td></tr></table></figure><p>修改 Konsole 默认的 shell 需要如下设置:</p><p>Konsole >> 设置 >> 编辑当前方案 >> 常规 >> 命令 >> <code>usr/bin/zsh</code></p><p>手动安装 Oh-My-Zsh,执行:(不推荐用包管理器安装)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">zsh -c <span class="string">"<span class="subst">$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)</span>"</span></span><br></pre></td></tr></table></figure><p>安装插件,执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://github.com/zsh-users/zsh-syntax-highlighting.git <span class="variable">$ZSH_CUSTOM</span>/plugins/zsh-syntax-highlighting</span><br><span class="line">git <span class="built_in">clone</span> https://github.com/zsh-users/zsh-autosuggestions <span class="variable">$ZSH_CUSTOM</span>/plugins/zsh-autosuggestions</span><br></pre></td></tr></table></figure><p>编辑设置文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim ~/.zshrc</span><br></pre></td></tr></table></figure><p>选择 Oh-My-Zsh 主题,推荐使用 geoffgarside:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ZSH_THEME="geoffgarside"</span><br></pre></td></tr></table></figure><p>选择 Oh-My-Zsh 插件:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">plugins=(git zsh-autosuggestions zsh-syntax-highlighting)</span><br></pre></td></tr></table></figure><p>更新 Oh-My-Zsh,执行:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">omz update</span><br></pre></td></tr></table></figure><p>卸载 Oh-My-Zsh,执行:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">uninstall_oh_my_zsh</span><br></pre></td></tr></table></figure><h3 id="GRUB-美化"><strong>GRUB 美化</strong></h3><h4 id="安装-GRUB-主题"><strong>安装 GRUB 主题</strong></h4><p>选择主题 grub2-themes,下载地址如下:</p><p><a href="https://github.com/vinceliuice/grub2-themes">grub2-themes – GitHub</a></p><p>可选的主题有:Tela/Vimix/Stylish/Slaze/Whitesur</p><p>以 Tela grub theme(2K,黑白图标)为例,解压后在文件夹内执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> ./install.sh -b -t tela -i white -s 2k</span><br></pre></td></tr></table></figure><h4 id="修改启动条目"><strong>修改启动条目</strong></h4><p>删除多余启动条目,需要修改 <code>/boot/grub/grub.cfg</code></p><p>删除整一段 <code>submenu 'Advanced options for Arch Linux'</code>,删除整一段 <code>UEFI Firmware Settings</code>,并将 <code>Windows Boot Manager (on /dev/nvme0n1p1)</code> 改为 <code>Windows</code></p><p><strong>注意之后不要再执行 <code>grub-mkconfig</code>,否则会覆盖更改</strong></p><h4 id="恢复默认的-GRUB-设置"><strong>恢复默认的 GRUB 设置</strong></h4><p>恢复默认的 <code>/boot/grub/grub.cfg</code> 需要输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> GRUB_DISABLE_OS_PROBER=<span class="literal">false</span> | <span class="built_in">sudo</span> <span class="built_in">tee</span> -a /etc/default/grub</span><br><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><h3 id="Vim-美化"><strong>Vim 美化</strong></h3><p>Vim 的颜色主题推荐使用 <a href="https://github.com/NLKNguyen/papercolor-theme">PaperColor</a>,需要将其中的 <code>PaperColor.vim</code> 文件复制到 <code>/usr/share/vim/vim90/colors/</code>,并在 <code>/etc/vimrc</code> 中添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">colorscheme PaperColor</span><br></pre></td></tr></table></figure><p>默认使用暗色主题,如果要使用亮色主题需要在 <code>/etc/vimrc</code> 中添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">set background=light</span><br></pre></td></tr></table></figure><h3 id="pacman-添加吃豆人彩蛋"><strong>pacman 添加吃豆人彩蛋</strong></h3><p>编辑 <code>/etc/pacman.conf</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /etc/pacman.conf</span><br></pre></td></tr></table></figure><p>去掉 <code>Color</code> 前面的注释,并在下一行加入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ILoveCandy</span><br></pre></td></tr></table></figure><p>即可添加吃豆人彩蛋</p><h3 id="配置桌面小部件(可选)"><strong>配置桌面小部件(可选)</strong></h3><p>右键点击桌面 >> 添加部件 >> 获取新部件 >> 下载新 Plasma 部件</p><p>在这里可以下载桌面小部件,并在“添加部件”处添加</p><h3 id="在桌面显示-Intel-CPU-频率(可选)"><strong>在桌面显示 Intel CPU 频率(可选)</strong></h3><p>安装 KDE 小部件:<a href="https://github.com/frankenfruity/plasma-pstate">Intel P-state and CPU-Freq Manager</a></p><p>右键点击顶栏,选择“添加部件”,找到 Intel P-state and CPU-Freq Manager 并添加在顶栏即可</p><h2 id="软件的下载与配置"><strong>软件的下载与配置</strong></h2><h3 id="PGP-密钥无法导入"><strong>PGP 密钥无法导入</strong></h3><p>如果导入 PGP 密钥发生 <code>gpg: keyserver receive failed: General error</code> 的问题,将 PGP 密钥复制下来并运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gpg --keyserver keyserver.ubuntu.com --recv-keys (pgp_key)</span><br></pre></td></tr></table></figure><p>再重新安装软件即可</p><h3 id="安装软件后在开始菜单中找不到图标"><strong>安装软件后在开始菜单中找不到图标</strong></h3><p>执行命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> update-desktop-database</span><br></pre></td></tr></table></figure><h3 id="生成-SSH-密钥"><strong>生成 SSH 密钥</strong></h3><p>首先安装 OpenSSH:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S openssh</span><br></pre></td></tr></table></figure><p>生成一个 SSH 密钥默认使用兼容性最好的 RSA 算法,现在推荐使用更安全的 ED25519 算法:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t ed25519 -C <span class="string">"(user_email)"</span></span><br></pre></td></tr></table></figure><p>第一步生成私钥,会询问 <code>Enter file in which to save the key</code>,默认是 <code>~/.ssh/id_ed25519</code>,可以改为别的位置和名字,如 <code>(ssh_folder)/(key_name)</code></p><p>第二步会提示输入安全密码,可以按 <code>Enter</code> 跳过,不影响后续操作和使用</p><p>这样创建的私钥位置为 <code>(ssh_folder)/(key_name)</code>,公钥位置为 <code>(ssh_folder)/(key_name).pub</code></p><p>如果 SSH 密钥不在默认的 <code>~/.ssh</code>,则需要创建设置文件 <code>~/.ssh/config</code>(这个文件必须在 <code>~/.ssh/</code> 文件夹内)并写入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">IdentityFile (ssh_folder)/(key_name)</span><br></pre></td></tr></table></figure><p>注意如果 <code>(ssh_folder)</code> 中含有空格,需要用 <code>\ </code> 即反斜杠进行转义</p><h3 id="向-AUR-提交软件包"><strong>向 AUR 提交软件包</strong></h3><h4 id="连接-AUR-仓库"><strong>连接 AUR 仓库</strong></h4><p>需要使用 SSH 连接 AUR 仓库</p><p>复制 <code>~/(ssh_folder)/.ssh/aur.pub</code> 的内容(至少包括前缀 <code>ssh_ed25519</code> 和公钥的随机字符串),粘贴到 AUR 的“My Account >> SSH 密钥”一节,输入密码以更新账号设置</p><p>在 <code>~/.ssh/config</code> 中为 AUR 指定 SSH 私钥的位置,即写入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Host aur.archlinux.org</span><br><span class="line">User (user_name)</span><br><span class="line">IdentityFile (ssh_folder)/(key_name)</span><br></pre></td></tr></table></figure><h4 id="创建软件包仓库"><strong>创建软件包仓库</strong></h4><p>如果要创建新的软件包,通过克隆所需的 <a href="https://wiki.archlinux.org/title/PKGBUILD#pkgbase">pkgbase</a> 的方式建立一个远程 AUR 仓库和本地 Git 仓库:(必须用 SSH 地址,需要登录 AUR 后才能看到)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> ssh://[email protected]/(package_name).git</span><br></pre></td></tr></table></figure><p>如果软件包还不存在,则会出现警告:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">warning: You appear to have cloned an empty repository.</span><br></pre></td></tr></table></figure><p>这不影响后续操作</p><h4 id="提交和更新软件包"><strong>提交和更新软件包</strong></h4><p><strong>要上传或者更新一个软件包,至少要添加 <code>PKGBUILD</code> 和 <code>.SRCINFO</code>,以及其他所有新增的或者修改过的辅助文件(例如 <code>.install</code> 文件或补丁等本地源码文件)</strong></p><p>生成 <code>.SRCINFO</code> 的方法如下</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">makepkg --printsrcinfo > .SRCINFO</span><br></pre></td></tr></table></figure><p>添加文件并提交,最后推送这些变动到 AUR 上:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git add PKGBUILD .SRCINFO</span><br><span class="line">git commit -m (commit_message)</span><br><span class="line">git push</span><br></pre></td></tr></table></figure><h3 id="Dolphin-显示文件预览图"><strong>Dolphin 显示文件预览图</strong></h3><p>首先在 Dolphin 的“设置 >> 配置 Dolphin >> 界面 >> 预览图”中勾选显示预览图的项目类型</p><p>之后勾选菜单栏上的“视图 >> 显示预览图”即可显示预览图</p><p>预览 PDF 文件、RAW 文件需要下载 <code>kdegraphics-thumbnailers</code>,预览视频文件需要下载 <code>ffmpegthumbs</code></p><h3 id="Kate-语言包下载"><strong>Kate 语言包下载</strong></h3><p>如果在打开 Kate 的时候出现:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kf.sonnet.core: No language dictionaries for the language: "en_US"</span><br></pre></td></tr></table></figure><p>下载 Kate 语言包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S aspell aspell-en</span><br></pre></td></tr></table></figure><h3 id="Gwenview-扩展"><strong>Gwenview 扩展</strong></h3><p>下载 <code>qt6-imageformats</code> 和 <code>kimageformats</code> 软件包:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo pacman -S qt6-imageformats kimageformats</span><br></pre></td></tr></table></figure><p><code>qt6-imageformats</code> 提供了 Gwenview 对 WebP、TIFF 等图片格式的支持</p><p><code>kimageformats</code> 提供了 Gwenview 对 EPS、PSD 等图片格式的支持,但 Gwenview 依然是以栅格化形式打开 EPS 矢量图,质量较差,建议用 Okular 查看 EPS 图片</p><h3 id="运行-AppImage-文件"><strong>运行 AppImage 文件</strong></h3><p>AppImage 的扩展名为 <code>.AppImage</code>,可以直接双击或在终端输入文件名运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">(file_name).AppImage</span><br></pre></td></tr></table></figure><p>运行 AppImage 需要 FUSE2:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S fuse2</span><br></pre></td></tr></table></figure><p>并检查是否有运行权限,若没有则需要添加运行权限:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> u+x (file_name).AppImage</span><br></pre></td></tr></table></figure><p>然后双击或在终端输入文件名运行即可</p><h3 id="用-debtap-安装-DEB-包"><strong>用 debtap 安装 DEB 包</strong></h3><p>首先要下载并更新 <a href="https://github.com/helixarch/debtap">debtap</a> 包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">paru -S debtap</span><br><span class="line"><span class="built_in">sudo</span> debtap -u</span><br></pre></td></tr></table></figure><p>进入含有 <code>.deb</code> 安装包的文件夹,输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">debtap (package_name).deb</span><br></pre></td></tr></table></figure><p>系统会询问三个问题:文件名、协议、编辑文件,都可以直接按 <code>Enter</code> 跳过</p><p>此处会生成一个 <code>tar.zst</code> 包,可以用 <code>pacman</code> 安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -U (package_name).tar/zst</span><br></pre></td></tr></table></figure><p>运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">debtap -P (package_name).deb</span><br></pre></td></tr></table></figure><p>会生成一个 <code>PKGBUILD</code> 文件,之后用 <code>makepkg -si</code> 也可安装</p><h3 id="v2rayA-安装与配置"><strong>v2rayA 安装与配置</strong></h3><p>v2rayA 客户端可以直接使用包管理器安装(AUR 软件库提供 <code>v2raya</code>、<code>v2raya-bin</code> 和 <code>v2raya-git</code>):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S v2raya-bin</span><br></pre></td></tr></table></figure><p>默认使用核心为 v2ray,可以在官方软件源下载:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S v2ray</span><br></pre></td></tr></table></figure><p>启动 v2rayA 需要使用 <code>systemctl</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> --now v2raya</span><br></pre></td></tr></table></figure><p>之后 v2rayA 可以开机自启动</p><p>在 <a href="http://localhost:2017/">http://localhost:2017/</a> 打开 v2rayA 界面,导入订阅链接或服务器链接(ID 填用户的 UUID,AlterID 填 0,Security 选择 Auto,其余选项均为默认)</p><p>右上角“设置”中,设置如下:</p><p>透明代理/系统代理 >> 启用:大陆白名单模式<br>透明代理/系统代理实现方式 >> tproxy<br>防止 DNS 污染 >> 转发 DNS 请求<br>特殊模式 >> 关闭</p><p>保存并应用设置</p><p>选择一个节点,点击左上角柚红色的“就绪”按钮即可启动,按钮变为蓝色的“正在运行”</p><p>选择左侧的勾选框可以测试节点的网络连接延时</p><p>此时系统测试网络连接的功能被屏蔽,可以通过在 <code>/etc/NetworkManager/conf.d/20-connectivity.conf</code> 中写入以下内容关闭此功能:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[connectivity]</span><br><span class="line">enabled=false</span><br></pre></td></tr></table></figure><h4 id="v2rayA-更改核心"><strong>v2rayA 更改核心</strong></h4><p>如果需要更改为 xray 核心,可以在 AUR 下载(AUR 软件库提供 <code>xray</code>、<code>xray-bin</code>):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S xray-bin</span><br></pre></td></tr></table></figure><p>创建文件夹 <code>/etc/systemd/system/v2raya.service.d</code>,并添加一个 <code>xray.conf</code> 文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> <span class="built_in">mkdir</span> /etc/systemd/system/v2raya.service.d</span><br><span class="line"><span class="built_in">cd</span> /etc/systemd/system/v2raya.service.d</span><br><span class="line"><span class="built_in">sudo</span> vim xray.conf</span><br></pre></td></tr></table></figure><p>写入如下内容:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[Service]</span><br><span class="line">Environment="V2RAYA_V2RAY_BIN=/usr/bin/xray"</span><br></pre></td></tr></table></figure><p>再重启 v2rayA:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl daemon-reload && <span class="built_in">sudo</span> systemctl restart v2raya</span><br></pre></td></tr></table></figure><h4 id="v2rayA-设置任务栏图标"><strong>v2rayA 设置任务栏图标</strong></h4><p>任务栏图标可以在 <a href="https://github.com/YidaozhanYa/v2rayATray">v2rayATray</a> 下载,即下载 <a href="https://github.com/YidaozhanYa/v2rayATray/blob/main/PKGBUILD">PKGBUILD</a>,在其所在的文件夹下执行 <code>makepkg -si</code> 即可安装</p><p>v2rayATray 的命令是 <code>v2raya_tray</code>,设置它为开机自启动可以在 KDE Plasma 的“系统设置 >> 自动启动”中设置</p><p><strong>浏览器和 KDE Plasma 的网络连接设置都不需要更改</strong></p><h3 id="DNS-设置"><strong>DNS 设置</strong></h3><p>DNS 会储存在 <code>/etc/resolv.conf</code> 文件中,一般由 <code>NetworkManager</code> 根据连接的网络自动生成,例如北京大学校园网的 DNS 服务器为:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">162.105.109.122</span><br><span class="line">162.105.109.88</span><br></pre></td></tr></table></figure><p>而 <code>/etc/resolv.conf</code> 文件会被其它软件所改写,如 v2rayA 的“防止 DNS 污染”功能若设置为“仅防止 DNS 劫持(快速)”,则会覆盖 <code>/etc/resolv.conf</code> 文件</p><p>如果要防止程序覆盖 <code>/etc/resolv.conf</code> 文件,可以通过设置不可变文件属性来为其建立写入保护:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> chattr +i /etc/resolv.conf</span><br></pre></td></tr></table></figure><h3 id="TeX-Live-安装"><strong>TeX Live 安装</strong></h3><h4 id="使用-ISO-镜像文件安装"><strong>使用 ISO 镜像文件安装</strong></h4><p><strong>一定要以 <code>sudo</code> 执行,否则无法安装到默认文件夹和设置 PATH 环境变量(无法写入)</strong></p><p>首先在<a href="https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/">清华大学镜像</a>或者<a href="https://mirrors.sjtug.sjtu.edu.cn/ctan/systems/texlive/Images/">上海交大镜像</a>下载最新的 TeX Live ISO,文件名为 <code>texlive.iso</code></p><p>在 Dolphin 中右键点击 ISO 镜像文件挂载(需要 <code>dolphin-plugins</code> 软件包),或在终端中运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> mount -t iso9660 -o ro,loop,noauto (texlive_path)/texlive.iso /mnt</span><br></pre></td></tr></table></figure><p>进入镜像文件夹,运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> perl install-tl -gui text</span><br></pre></td></tr></table></figure><p>用大写字母命令控制安装:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">S >> 选择安装方案 >> R</span><br><span class="line">C >> 输入字母选择要安装/不安装的软件包集合 >> R</span><br><span class="line">D >> 输入数字,选择要安装 TeX Live 的各种位置 >> R</span><br><span class="line">O >> L >> 选择默认位置 >> R</span><br><span class="line">I</span><br></pre></td></tr></table></figure><p><code><D> set directories</code> 中可以选择默认文件夹,若更改 <code>TEXDIR</code>,<code>TEXMFLOCAL</code> 等会随 <code>TEXDIR</code> 自动更改</p><p><code><O> options</code> 中一定要选择 <code><L> create symlinks in standard directories</code>,这会自动设置 PATH 环境变量</p><p>如果使用图形界面安装,首先要检查是否安装 <code>tcl</code> 和 <code>tk</code> 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S tcl tk</span><br></pre></td></tr></table></figure><p>进入镜像文件夹,运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> perl install-tl -gui</span><br></pre></td></tr></table></figure><p>即可在图形界面下载 TeX Live,高级设置需要点击左下角的 Advanced 按钮</p><h4 id="手动设置-PATH-环境变量"><strong>手动设置 PATH 环境变量</strong></h4><p><strong>如果在安装时选择了 <code><L> create symlinks in standard directories</code>,则不需要如下操作</strong></p><p>编辑 <code>/etc/profile</code>,添加如下内容:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">PATH=/usr/local/texlive/2024/bin/x86_64-linux:<span class="variable">$PATH</span>; <span class="built_in">export</span> PATH</span><br><span class="line">MANPATH=/usr/local/texlive/2024/texmf-dist/doc/man:<span class="variable">$MANPATH</span>; <span class="built_in">export</span> MANPATH</span><br><span class="line">INFOPATH=/usr/local/texlive/2024/texmf-dist/doc/info:<span class="variable">$INFOPATH</span>; <span class="built_in">export</span> INFOPATH</span><br></pre></td></tr></table></figure><p>之后重启电脑</p><p>这样可以保证 Bash、Visual Studio Code 等都能够找到 TeX Live 的环境变量</p><p>可以运行 <code>tex --version</code> 检查是否安装成功,若成功应显示 TeX 的版本号、TeX Live 的版本号和版权信息</p><p>还可以运行 <code>tlmgr --version</code> 和 <code>texdoc (package_name)</code> (选择常见的宏包名称如 <code>texdoc tex</code>)检查是否安装成功</p><p>输入命令 <code>tlmgr conf</code> 可以查看 TeX Live 的文件夹设置,如 <code>TEXMFMAIN=(TEXDIR)/texmf-dist</code></p><h4 id="使用-pacman-安装"><strong>使用 pacman 安装</strong></h4><p>可以使用 <code>pacman</code> 从 Arch Linux 的官方源下载所需要的 TeX Live 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman texlive-basic</span><br></pre></td></tr></table></figure><p>其余 TeX Live 软件包按需下载,可以在 <a href="https://archlinux.org/packages/">Arch Linux Packages</a> 查看</p><p>TeX Live 软件包的文档可以在以下网站在线查看:</p><p><a href="https://www.ctan.org/">CTAN: Comprehensive TeX Archive Network</a></p><p><a href="https://texdoc.org/">TeXdoc online documentation</a></p><p>也可以下载 <code>texlive-doc</code> 软件包(大小为 2.3 GiB):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S texlive-doc</span><br></pre></td></tr></table></figure><p>之后也可以通过 Arch Linux 官方源更新</p><p><strong>注意官方软件源的更新周期与 TeX Live 相同,即一年一次,且只能以软件包集合为最小单位下载</strong></p><h4 id="更改-CTAN-镜像源"><strong>更改 CTAN 镜像源</strong></h4><p>CTAN 镜像源可以使用 TeX Live 包管理器 <code>tlmgr</code> 更改</p><p>更改到清华大学镜像需要在命令行中执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet</span><br></pre></td></tr></table></figure><p>更改到上海交大镜像需要在命令行中执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tlmgr option repository https://mirrors.sjtug.sjtu.edu.cn/ctan/systems/texlive/tlnet/</span><br></pre></td></tr></table></figure><h4 id="从安装程序安装"><strong>从安装程序安装</strong></h4><p>可以从<a href="https://www.tug.org/texlive/acquire-netinstall.html">官网</a>下载 <a href="https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz">install-tl-unx.tar.gz</a>,解压后可以找到一个 <code>install-tl</code> 文件,执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> perl install-tl -select-repository -gui text</span><br></pre></td></tr></table></figure><p>第一步输入数字选择镜像站,建议选择清华大学镜像或上海交大镜像</p><p>之后步骤与前面一致,大约需要 1h(从 ISO 安装只需要 10min,因为是直接从本地 ISO 镜像中安装,不需要网络)</p><h4 id="tlmgr-的常用命令"><strong>tlmgr 的常用命令</strong></h4><p>显示说明文档:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tlmgr -<span class="built_in">help</span></span><br></pre></td></tr></table></figure><p>下载软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tlmgr update (package_name)</span><br></pre></td></tr></table></figure><p>这会同时下载软件包及其依赖</p><p>更新自身:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tlmgr update -self</span><br></pre></td></tr></table></figure><p>更新全部软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> tlmgr update -all</span><br></pre></td></tr></table></figure><p>查找本地软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tlmgr search (package_name)</span><br></pre></td></tr></table></figure><p>从软件源(即完整的 TeX Live)查找软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tlmgr search -global (package_name)</span><br></pre></td></tr></table></figure><p>从软件源查找软件包文件(如 <code>.sty</code> 文件、<code>.def</code> 文件等):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tlmgr search -global (file_name)</span><br></pre></td></tr></table></figure><h4 id="命令行编译-LaTeX-源文件"><strong>命令行编译 LaTeX 源文件</strong></h4><p>建议使用 <code>latexmk</code>,可以自动编译 <code>.tex</code>、<code>.bib</code> 文件等,直到最后输出正确的 PDF 文件</p><p>以 LuaLaTeX 为例,命令为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">latexmk -lualatex -bibtex -synctex=1 -interaction=nonstopmode -file-line-error --shell-escape (file_name)</span><br></pre></td></tr></table></figure><p>如果使用 XeLaTeX,将 <code>-lualatex</code> 改为 <code>-xelatex</code> 即可</p><p>清理编译时产生的多余文件的命令为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">latexmk -clean (file_name)</span><br></pre></td></tr></table></figure><h4 id="biber-报错"><strong>biber 报错</strong></h4><p>biber 是 biblatex 的默认后端,用来替换过时的 biblatex,如果在运行 biber 的过程中出现以下报错:(可以用 <code>biber --help</code> 尝试)</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</span><br></pre></td></tr></table></figure><p>需要安装 <code>libxcrypt-compat</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S libxcrypt-compat</span><br></pre></td></tr></table></figure><h4 id="安装-MathTime-Professional-2-字体"><strong>安装 MathTime Professional 2 字体</strong></h4><p><a href="https://www.pctex.com/mtpro2.html">MathTime Professional 2</a> 字体是 Type 1 字体,下载后为 <code>mtp2fonts.zip.tpm</code> 文件</p><p>可以使用以下脚本安装在 Linux 上:</p><p><a href="https://github.com/jamespfennell/mathtime-installer">Mathtime Installer – GitHub</a></p><p>下载 <code>mtpro2-texlive.sh</code>,并安装 <code>unzip</code> 软件包,之后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash mtpro2-texlive.sh -i mtp2fonts.zip.tpm</span><br></pre></td></tr></table></figure><p>之后可以用 <code>\usepackage{mtpro2}</code> 使用 MathTime Professional 2 字体,用 <code>texdoc mtpro2</code> 查看文档</p><h3 id="TeXstudio-安装与配置(可选)"><strong>TeXstudio 安装与配置(可选)</strong></h3><p>安装 TeXstudio:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S texstudio</span><br></pre></td></tr></table></figure><p>帮助 >> 检查 LaTeX 安装信息</p><p>如果能检测到 LaTeX,说明 TeX Live 安装成功,开始设置</p><p>选项 >> 设置 TeXstudio</p><p>首先在左下角勾选“显示高级选项”</p><p>常规 >> 会话 >> 取消勾选“启动时恢复上一次会话”(可选)</p><p>菜单 >> 数学 >> <code>\frac{}{}</code> >> <code>\frac{%|}{}</code></p><p>菜单 >> 数学 >> <code>\dfrac{}{}</code> >> <code>\dfrac{%|}{}</code></p><p>快捷键 >> 数学 >> 数学字体格式 >> 罗马字体 >> 当前快捷键 >> <code>Alt+Shift+R</code></p><p>编辑器 >> 缩进模式 >> 自动增加或减少缩进</p><p>编辑器 >> 缩进模式 >> 勾选“将缩进替换为空格”和“将文本中的制表符(Tab)替换为空格”</p><p>编辑器 >> 显示行号 >> 所有行号</p><p>编辑器 >> 取消勾选“行内检查”</p><p>高级编辑器 >> 自动保存所有文件 >> 1 分钟</p><p>高级编辑器 >> 破解/变通 >> 取消勾选“自动选择最佳显示选项”,并勾选“禁用字符宽度缓存”和“关闭固定位置模式”</p><p>补全 >> 取消勾选“输入参数”</p><h3 id="Thunderbird-安装与配置"><strong>Thunderbird 安装与配置</strong></h3><h4 id="Thunderbird-安装"><strong>Thunderbird 安装</strong></h4><p>在官方仓库中安装 Thunderbird 邮件新闻客户端:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S thunderbird</span><br></pre></td></tr></table></figure><p>可以安装中文语言包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S thunderbird-i18n-zh-cn</span><br></pre></td></tr></table></figure><p>打开 Thunderbird 后需要添加账户,输入自定义的姓名,现有的邮箱和密码即可,Thunderbird 会自动配置</p><p>再添加账户可以在右上角菜单栏选择“添加账户”中的“现有邮箱”,并可以拖动账户更改排序</p><h4 id="Thunderbird-设置"><strong>Thunderbird 设置</strong></h4><p>进入设置界面调整显示:</p><p>设置 >> 常规 >> Thunderbird 起始页 >> 清空并取消勾选</p><p>设置 >> 常规 >> 默认搜索引擎 >> 改为 Bing 或 Google</p><p>设置 >> 隐私 >> 邮件内容 >> 勾选“允许消息中的远程内容”</p><p>右键点击上方邮件工具栏,选择“自定义”,自行配置即可</p><h4 id="Thunderbird-账户设置"><strong>Thunderbird 账户设置</strong></h4><p>点击邮箱帐号,配置“账户设置”如下:</p><p>服务器 >> 服务器设置 >> 每隔 1 分钟检查一次新消息</p><p>如果要删除账户,在“账户设置”左下角的“账户操作”中选择“删除账户”</p><h3 id="GitHub-Desktop-安装"><strong>GitHub Desktop 安装</strong></h3><p>推荐选择二进制包 <code>github-desktop-bin</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S github-desktop-bin gnome-keyring</span><br></pre></td></tr></table></figure><p>登录时要创建一个密钥环,密钥设为 GitHub 密码即可</p><h3 id="使用-SSH-连接到-GitHub"><strong>使用 SSH 连接到 GitHub</strong></h3><p>推荐使用 SSH 连接到 GitHub,其安全性更高,访问速度较快且更加稳定</p><p>配置参考以下网址:</p><p><a href="https://docs.github.com/cn/github/authenticating-to-github/connecting-to-github-with-ssh">GitHub Docs – 使用 SSH 连接到 GitHub</a></p><p>步骤如下:(Linux 上直接用系统终端,Windows 上需要用 Git Bash 而不能用 Windows Terminal,因为缺少 <code>eval</code> 等命令)</p><h4 id="生成新-SSH-密钥并添加到-ssh-agent"><strong>生成新 SSH 密钥并添加到 ssh-agent</strong></h4><p>生成一个 SSH 密钥默认使用兼容性最好的 RSA 算法,现在推荐使用更安全的 ED25519 算法:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t ed25519 -C <span class="string">"(user_email)"</span></span><br></pre></td></tr></table></figure><p>第一步生成私钥,会询问 <code>Enter file in which to save the key</code>,默认是 <code>~/.ssh/id_ed25519</code>,可以改为别的位置和名字,如 <code>(ssh_folder)/(key_name)</code></p><p>第二步会提示输入安全密码,可以按 <code>Enter</code> 跳过,不影响后续操作和使用</p><p>这样创建的私钥位置为 <code>(ssh_folder)/(key_name)</code>,公钥位置为 <code>(ssh_folder)/(key_name).pub</code></p><p>如果 SSH 密钥不在默认的 <code>~/.ssh</code>,则需要创建设置文件 <code>~/.ssh/config</code>(这个文件必须在 <code>~/.ssh/</code> 文件夹内)并写入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">IdentityFile (ssh_folder)/(key_name)</span><br></pre></td></tr></table></figure><p>之后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">eval</span> <span class="string">"<span class="subst">$(ssh-agent -s)</span>"</span></span><br><span class="line">ssh-add (ssh_folder)/(key_name)</span><br></pre></td></tr></table></figure><h4 id="新增-SSH-密钥到-GitHub-帐户"><strong>新增 SSH 密钥到 GitHub 帐户</strong></h4><p>通过 <code>cat ~/.ssh/id_ed25519.pub</code> 查看公钥并复制到 GitHub 账户下的“Settings >> SSH and GPG keys”中</p><h4 id="测试-SSH-连接"><strong>测试 SSH 连接</strong></h4><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T [email protected]</span><br></pre></td></tr></table></figure><p>这一步要输入 <code>yes</code> 确定</p><p>此时会显示:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Hi (user_name)! You've successfully authenticated, but GitHub does not provide shell access.</span><br></pre></td></tr></table></figure><p>说明 SSH 连接测试成功</p><p><strong>注意 Linux 上和 Windows 上用的是不同的密钥,Windows 上操作步骤相同,但需要在 Git Bash(而不是 Windows Powershell)上执行</strong></p><h3 id="Python-安装与配置"><strong>Python 安装与配置</strong></h3><p>Arch Linux 预装了 Python,但没有安装包管理器,可以使用 <code>pip</code> 或 <code>conda</code></p><h4 id="pip-安装"><strong>pip 安装</strong></h4><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python get-pip.py</span><br></pre></td></tr></table></figure><p>即可安装 pip,此时不建议安装 conda,pip 下载包的命令是:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install (package_name)</span><br></pre></td></tr></table></figure><p>列出 pip 下载的所有包,包括下载的位置:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip list -v</span><br></pre></td></tr></table></figure><p>下载 Python 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install numpy matplotlib astropy black isort ipython jupyterlab</span><br></pre></td></tr></table></figure><p>使用 Matplotlib 绘图需要下载 tk 库:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S tk</span><br></pre></td></tr></table></figure><h4 id="Miniconda-安装"><strong>Miniconda 安装</strong></h4><p>Miniconda 是 Anaconda 的精简版,推荐使用 Miniconda</p><p>下载地址如下:</p><p><a href="https://docs.conda.io/en/latest/miniconda.html">Miniconda – Conda documentation</a></p><p>安装过程参考以下网址:(Miniconda 和 Anaconda 的安装步骤相同)</p><p><a href="https://docs.anaconda.com/anaconda/install/linux/">Anaconda Documentation – Installing on Linux</a></p><p>用 <code>bash</code> 执行安装文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash Miniconda3-latest-Linux-x86_64.sh</span><br></pre></td></tr></table></figure><p>按 <code>Enter</code> 查看许可协议,然后按住 <code>Enter</code> 滚动</p><p>输入 <code>yes</code> 同意许可协议</p><p>输入安装 Miniconda 的目录并按 <code>Enter</code> 确定</p><p>最后一步输入 <code>yes</code> 执行 <code>conda init</code> 初始化 Miniconda</p><p>注意最后一步要选择 <code>yes</code></p><p>如果使用 <code>zsh</code>,需要用 <code>zsh</code> 执行安装文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">zsh ./Miniconda3-latest-Linux-x86_64.sh</span><br></pre></td></tr></table></figure><p>并手动在 <code>~/.zshrc</code> 中添加 PATH(<code>miniconda_path</code> 为 Miniconda 的安装位置):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">export</span> PATH=(miniconda_path)/bin:<span class="variable">$PATH</span></span><br></pre></td></tr></table></figure><p>最后用 <code>source ~/.zshrc</code> 刷新设置</p><h4 id="Miniconda-配置软件源"><strong>Miniconda 配置软件源</strong></h4><p>输入以下命令:(在 Windows 中用户无法直接创建名为 <code>.condarc</code> 的文件,可先执行 <code>conda config --set show_channel_urls yes</code> 生成该文件之后再修改)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim ~/.condarc</span><br></pre></td></tr></table></figure><p>修改 <code>~/.condarc</code> 以使用清华大学镜像:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">channels:</span><br><span class="line"> - defaults</span><br><span class="line">show_channel_urls: true</span><br><span class="line">default_channels:</span><br><span class="line"> - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main</span><br><span class="line"> - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r</span><br><span class="line"> - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2</span><br><span class="line">custom_channels:</span><br><span class="line"> conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud</span><br><span class="line"> pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud</span><br></pre></td></tr></table></figure><p>或上海交大镜像:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">channels:</span><br><span class="line"> - defaults</span><br><span class="line">default_channels:</span><br><span class="line"> - https://mirror.sjtu.edu.cn/anaconda/pkgs/main</span><br><span class="line"> - https://mirror.sjtu.edu.cn/anaconda/pkgs/r</span><br><span class="line"> - https://mirror.sjtu.edu.cn/anaconda/pkgs/msys2</span><br><span class="line">custom_channels:</span><br><span class="line"> conda-forge: https://mirror.sjtu.edu.cn/anaconda/cloud/</span><br><span class="line"> pytorch: https://mirror.sjtu.edu.cn/anaconda/cloud/</span><br></pre></td></tr></table></figure><p>若不用特定的镜像,改为默认值:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">channels:</span><br><span class="line"> - defaults</span><br><span class="line">ssl_verify: true</span><br></pre></td></tr></table></figure><h4 id="Miniconda-下载软件包"><strong>Miniconda 下载软件包</strong></h4><p>下载 Python 软件包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install numpy matplotlib astropy black isort ipython jupyterlab</span><br></pre></td></tr></table></figure><p>各个操作系统平台上可下载的包可以在以下网站查询:</p><p><a href="https://docs.anaconda.com/anaconda/packages/pkg-docs/">Anaconda Documentation – Anaconda Package Lists</a></p><p>下载 JupyterLab 插件:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install lckr_jupyterlab_variableinspector jupyterlab-lsp python-lsp-server[all] jupyterlab_execute_time jupyterlab-code-formatter jupyterlab-spellchecker ipympl jupyterlab_h5web</span><br></pre></td></tr></table></figure><h4 id="Conda-常用命令"><strong>Conda 常用命令</strong></h4><p>列出所有下载的包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda list</span><br></pre></td></tr></table></figure><p>添加软件源:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda config --add channels (channel_URL)</span><br></pre></td></tr></table></figure><p>下载包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install (package_name)</span><br></pre></td></tr></table></figure><p>下载特定版本的包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install (package_name)=(version_number)</span><br></pre></td></tr></table></figure><p>下载 <a href="https://conda-forge.org/">conda-forge</a> 中的软件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install -c conda-forge (package_name)</span><br></pre></td></tr></table></figure><p>更新包:(<code>pip</code> 的相应命令为 <code>pip install --upgrade (package_name)</code>)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda update (package_name)</span><br></pre></td></tr></table></figure><p>更新所有包:(<code>pip</code> 不支持更新所有包,但可以用 <code>pip list --outdated</code> 列出所有过期包再一个个更新)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda update --all</span><br></pre></td></tr></table></figure><p>删除所有旧版本的包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda clean -p</span><br></pre></td></tr></table></figure><p>列出并恢复之前的版本:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">conda list --revisions</span><br><span class="line">conda install --revision (revision_number)</span><br></pre></td></tr></table></figure><p>如果回滚到早期版本(<code>revision_number</code> 较小)之后又想回到某个高版本(<code>revision_number</code> 较大),必须要把两个版本中的版本都装一遍</p><p>列出所有的环境:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda <span class="built_in">env</span> list</span><br></pre></td></tr></table></figure><p>创建新环境:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda create -n (environment_name)</span><br></pre></td></tr></table></figure><p>Conda 默认会在 Miniconda/Anaconda 的安装位置创建一个 <code>base</code> 环境</p><p>激活环境:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda activate (environment_name)</span><br></pre></td></tr></table></figure><p>取消激活环境:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda deactivate (environment_name)</span><br></pre></td></tr></table></figure><p>删除环境:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda <span class="built_in">env</span> remove -n (environment_name)</span><br></pre></td></tr></table></figure><h4 id="加入-AstroConda-软件源"><strong>加入 AstroConda 软件源</strong></h4><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda config --add channels http://ssb.stsci.edu/astroconda</span><br></pre></td></tr></table></figure><p>这样就可以下载 <code>wcstools</code> 等软件</p><h4 id="下载-JupyterLab"><strong>下载 JupyterLab</strong></h4><p>可以通过 <code>pip</code> 下载:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install jupyterlab</span><br></pre></td></tr></table></figure><p>或者在 conda-forge 中下载:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install -c conda-forge jupyterlab</span><br></pre></td></tr></table></figure><p>下载后用 <code>jupyter-lab</code> 或 <code>jupyter lab</code> 命令在浏览器中打开</p><h4 id="下载-photutils"><strong>下载 photutils</strong></h4><p>需要在 conda-forge 中下载:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install -c conda-forge photutils</span><br></pre></td></tr></table></figure><h4 id="Spyder-下载与配置"><strong>Spyder 下载与配置</strong></h4><p>推荐使用 <code>conda</code> 下载,在 conda-forge 中有最新的版本:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install -c conda-forge spyder</span><br></pre></td></tr></table></figure><p>Spyder 配置如下:</p><p>通用 >> 显示器分辨率 >> 自定义高分辨率缩放 >> 1.0</p><p>编辑选定的方案:</p><p>文本:(<code>B</code> 表示加粗)</p><ul><li>普通文本 <code>#000000</code></li><li>注释:<code>#aeaeae</code>,<code>B</code></li><li>字符串:<code>#ff7777</code></li><li>数值:<code>#a530e0</code></li><li>关键字:<code>#2aa4db</code>,<code>B</code></li><li>内置:<code>#f43232</code>,<code>B</code></li><li>定义:<code>#ee55b7</code></li><li>实例:<code>#00d29e</code></li></ul><p>高亮:</p><ul><li>当前 Cell:<code>#e49dfd</code></li><li>当前行:<code>#b2ffdd</code></li><li>事件:<code>#fff442</code></li><li>匹配圆括号:<code>#ff7f27</code></li><li>不匹配圆括号:<code>#ff3535</code></li><li>链接:<code>#74f466</code></li></ul><p>编辑器 >> 勾选“显示标签栏”、“显示缩进指导”、“显示行号”、“高亮显示当前行”、“高亮显示当前 Cell”,并把“高亮延迟时间”设定为 100 毫秒</p><p>用 Spyder 打开某个文件需要在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">spyder (file_path)/(file_name)</span><br></pre></td></tr></table></figure><p>Spyder 会在 <code>~/.config/spyder-py3</code> 中创建初始文件 <code>temp.py</code></p><p>如果使用 Anaconda/Miniconda 安装 Spyder,需要用 conda 安装 <code>fcitx-qt5</code> 才能支持 Fcitx/Fcitx5 输入中文字符:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">conda install -c conda-forge fcitx-qt5</span><br></pre></td></tr></table></figure><h3 id="Visual-Studio-Code-安装与配置"><strong>Visual Studio Code 安装与配置</strong></h3><h4 id="Visual-Studio-Code-安装"><strong>Visual Studio Code 安装</strong></h4><p>发行版维护者从开源代码构建的版本,可以用 <code>code</code> 命令打开(缺点是图标被重新设计过,且更新略微落后于微软官方版):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S code</span><br></pre></td></tr></table></figure><p>微软官方的二进制包(包含部分私有的组件),同样可以用 <code>code</code> 命令打开(如果不介意私有组件而且不习惯 Code - OSS 的图标,个人推荐首选此项):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S visual-studio-code-bin</span><br></pre></td></tr></table></figure><p>内测版本:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S visual-studio-code-insiders-bin</span><br></pre></td></tr></table></figure><p><a href="https://vscodium.com/">VSCodium</a> 发布的从开源代码构建的二进制包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S vscodium-bin</span><br></pre></td></tr></table></figure><p><a href="https://vscodium.com/">VSCodium</a> 从最新的开源代码构建:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S vscodium-git</span><br></pre></td></tr></table></figure><p>下载扩展:Python(需要单独下载代码风格检查工具 Pylint 和格式化工具 autopep8 或 Black Formatter)、Jupyter、LaTeX Workshop、Markdown all in One 等</p><p>扩展保存在 <code>~/.vscode/extensions/</code> 文件夹内</p><h4 id="Visual-Studio-Code-设置"><strong>Visual Studio Code 设置</strong></h4><p>若要更改全局设置,设置文件在 <code>~/.config/Code/User/settings.json</code>,可以在 Visual Studio Code 中按 <code>Ctrl+,</code> 开启设置</p><p>若要更改全局快捷键,设置文件在 <code>~/.config/Code/User/keybindings.json</code>,可以在 Visual Studio Code 中按 <code>Ctrl+K Ctrl+S</code> 开启设置</p><h4 id="Visual-Studio-Code-连字设置"><strong>Visual Studio Code 连字设置</strong></h4><p>在 <code>setting.json</code> 中关闭连字:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"editor.fontLigatures"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure><p>Fira Code 的连字可以设置为:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"editor.fontFamily"</span><span class="punctuation">:</span> <span class="string">"Fira Code"</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"editor.fontLigatures"</span><span class="punctuation">:</span> <span class="string">"'calt' off, 'cv16', 'ss01', 'ss03', 'ss05', 'zero'"</span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure><h4 id="Visual-Studio-Code-无法识别-Git-存储库"><strong>Visual Studio Code 无法识别 Git 存储库</strong></h4><p>如果 Visual Studio Code 无法识别文件夹内的 Git 存储库(显示“当前打开的文件夹中没有 Git 存储库”),是因为 Git 认为该文件夹不安全,需要对该文件夹执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --global --add safe.directory (directory_path)</span><br></pre></td></tr></table></figure><p><code>(directory_path)</code> 不能用 <code>./</code> 或 <code>../</code>,最好用绝对路径</p><p>文件夹安全性状态可以通过 <code>git status</code> 查看</p><p>如果要完全跳过检查,执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --global --add safe.directory <span class="string">"*"</span></span><br></pre></td></tr></table></figure><h4 id="Visual-Studio-Code-图标更改(可选)"><strong>Visual Studio Code 图标更改(可选)</strong></h4><p>如果图标美化后 Visual Studio Code 图标变成圆形,想恢复原图标,更改路径如下:</p><p>程序启动器 >> 编辑应用程序 >> Visual Studio Code >> 点击图标更改 >> 其他图标</p><p>其图标位置在 <code>/usr/share/icons/visual-studio-code.png</code></p><h4 id="Visual-Studio-Code-缩放比例(可选)"><strong>Visual Studio Code 缩放比例(可选)</strong></h4><p>放大比例:<code>Ctrl+=</code></p><p>缩小比例:<code>Ctrl+-</code></p><h4 id="Python-插件设置"><strong>Python 插件设置</strong></h4><p>如果使用的是 Miniconda 提供的 Python,需要查询 Python 的安装位置:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">which</span> python</span><br></pre></td></tr></table></figure><p>并将返回的结果 <code>(python_path)</code> 添加到 <code>settings.json</code> 中:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"python.defaultInterpreterPath"</span><span class="punctuation">:</span> <span class="string">"(python_path)"</span></span><br></pre></td></tr></table></figure><h4 id="LaTeX-Workshop-插件设置"><strong>LaTeX Workshop 插件设置</strong></h4><p>若想在 <a href="https://github.com/James-Yu/LaTeX-Workshop">LaTeX Workshop</a> 里面添加 <code>\frac{}{}</code> 命令的快捷键为 <code>Ctrl+M Ctrl+F</code>,则添加一段:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"key"</span><span class="punctuation">:</span> <span class="string">"ctrl+m ctrl+f"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"command"</span><span class="punctuation">:</span> <span class="string">"editor.action.insertSnippet"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"args"</span><span class="punctuation">:</span> <span class="punctuation">{</span> <span class="attr">"snippet"</span><span class="punctuation">:</span> <span class="string">"\\frac{$1}{$2}$0"</span> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"when"</span><span class="punctuation">:</span> <span class="string">"editorTextFocus && !editorReadonly && editorLangId =~ /latex|rsweave|jlweave/"</span><span class="punctuation">,</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure><p>若要更改行间公式 <code>\[\]</code> 的自动补全(公式独占一行),在 <code>~/.vscode/extensions/james-yu.latex-workshop-(version_number)/data/commands.json</code> 中找到 <code>"command": "["</code> 一段(即“display math”),将 <code>"snippet"</code> 的值改为:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">"[\n\t${1}\n\\]"</span></span><br></pre></td></tr></table></figure><p>重启 Visual Studio Code 即可生效,缺点是插件每次更新时会覆盖设置</p><h4 id="Markdown-All-in-One-插件设置"><strong>Markdown All in One 插件设置</strong></h4><p>Visual Studio Code 自带 Markdown 预览功能,但是不支持快捷键(如粗体、斜体)、数学命令的补全(只支持预览),也不支持复选框:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">- [x] item 1</span><br><span class="line">- [ ] item 2</span><br></pre></td></tr></table></figure><p><a href="https://github.com/yzhang-gh/vscode-markdown">Markdown All in One</a> 提供了粗体、斜体等的快捷键,对数学公式补全支持较好,也支持复选框,缺点是不支持自动补全配对括号(在设置中将所有语言的括号自动配对打开即可),即在 <code>setting.json</code> 中设置为:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"editor.autoClosingBrackets"</span><span class="punctuation">:</span> <span class="string">"always"</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"markdown.extension.math.enabled"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure><p>而 Markdown 预览支持最好的插件是 <a href="https://github.com/shd101wyy/markdown-preview-enhanced">Markdown Preview Enhanced</a>,使用时可以选择插件预览或默认预览</p><h3 id="JetBrains-Fleet-安装"><strong>JetBrains Fleet 安装</strong></h3><p>JetBrains Fleet 已经在 AUR 上打包:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S jetbrains-fleet</span><br></pre></td></tr></table></figure><h3 id="Typora-安装和设置"><strong>Typora 安装和设置</strong></h3><h4 id="Typora-安装"><strong>Typora 安装</strong></h4><p>Typora 可以从 AUR 安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S typora</span><br></pre></td></tr></table></figure><h4 id="源代码模式设置"><strong>源代码模式设置</strong></h4><p>更改 <code>/usr/share/typora/resources/style/base-control.css</code>:(在 Windows 中则是 <code>C:\Program Files\Typora\resources\style\base-control.css</code>)</p><p>找到 <code>.CodeMirror.cm-s-typora-default div.CodeMirror-cursor</code> 一行,将光标宽度改为 <code>1px</code>,颜色从 <code>#e4629a</code> 改为 <code>#000000</code></p><p>更改 <code>/usr/share/typora/resources/style/base.css</code>:(在 Windows 中则是 <code>C:\Program Files\Typora\resources\style\base.css</code>)</p><p>找到 <code>:root</code> 一行,将 <code>--monospace</code> 改成自己想要的等宽字体</p><h4 id="主题渲染模式设置"><strong>主题渲染模式设置</strong></h4><p>在 <code>/home/(user_name)/.config/Typora/themes/</code> 中自己写一个 CSS 文件(可以复制其中一个默认主题,重命名后更改)</p><p>找到 <code>body</code> 一行,将 <code>font-family</code> 改成自己想要的字体</p><p>找到 <code>tt</code> 一行,将 <code>font-family</code> 改成自己想要的等宽字体(<code>monospace</code>)</p><h3 id="SAOImageDS9-安装和设置"><strong>SAOImageDS9 安装和设置</strong></h3><p>AUR 中有 <code>ds9</code>、<code>ds9-bin</code> 和 <code>ds9-git</code> 三个版本,以二进制包 <code>ds9-bin</code> 为例:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S ds9-bin</span><br></pre></td></tr></table></figure><p>如果出现这样的错误导致 SAOImageDS9 无法打开或闪退:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">application-specific initialization failed: unknown color name "BACKGROUND"</span><br><span class="line">Unable to initialize window system.</span><br></pre></td></tr></table></figure><p>在终端中输入:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">xrdb -load /dev/null</span><br><span class="line">xrdb -query</span><br></pre></td></tr></table></figure><p>即可解决</p><p>设置 SAOImageDS9 使用鼠标左键拖动图片如下:</p><p>Edit >> Preferences >> Pan Zoom >> 选择“Drag to Center”</p><p>保存设置后,在“Edit >> Pan”模式下即可使用鼠标左键拖动图片</p><h3 id="IRAF-PyRAF-安装"><strong>IRAF/PyRAF 安装</strong></h3><h4 id="从-AUR-安装-IRAF"><strong>从 AUR 安装 IRAF</strong></h4><p>可以从 AUR 安装 IRAF:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S iraf-bin</span><br></pre></td></tr></table></figure><h4 id="从源代码安装-IRAF"><strong>从源代码安装 IRAF</strong></h4><p>首先下载编译依赖:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S gcc make bison flex zlib curl expat readline</span><br></pre></td></tr></table></figure><p>从 GitHub 上下载软件源代码:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> https://github.com/iraf-community/iraf.git</span><br></pre></td></tr></table></figure><p>进入 <code>iraf</code> 文件夹,并执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">make 2>&1 | <span class="built_in">tee</span> build.log</span><br></pre></td></tr></table></figure><p>可以使用 <code>make test</code> 测试安装,输出的 <code>xfailed</code> 是预计就会失败的,不必担心</p><p>之后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> make install</span><br></pre></td></tr></table></figure><p>将其安装到系统</p><p>默认安装到 <code>/usr/local</code>,也可以更改为其它位置:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> make install prefix=(directory)</span><br></pre></td></tr></table></figure><p>部分功能可能需要 xgterm:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S xgterm-bin</span><br></pre></td></tr></table></figure><h4 id="安装-PyRAF"><strong>安装 PyRAF</strong></h4><p>可以用 pip 安装 PyRAF:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install pyraf</span><br></pre></td></tr></table></figure><h4 id="IRAF-PyRAF-常用命令"><strong>IRAF/PyRAF 常用命令</strong></h4><p>启动 IRAF 的命令为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">irafcl</span><br></pre></td></tr></table></figure><p>列出所有可以使用的 IRAF 命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">?</span><br></pre></td></tr></table></figure><p>查看命令的说明文档:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">help</span> (<span class="built_in">command</span>)</span><br></pre></td></tr></table></figure><p>启动 PyRAF:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pyraf</span><br></pre></td></tr></table></figure><p>退出 IRAF:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">logout</span></span><br></pre></td></tr></table></figure><p>退出 PyRAF:(也可以用 <code>Ctrl+D</code>)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">exit</span>()</span><br></pre></td></tr></table></figure><p>启动参数编辑器(the EPAR Parameter Editor)的命令为:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">epar (task_name)</span><br></pre></td></tr></table></figure><p>退出参数编辑器的命令和 Vim 一样,也是 <code>:q</code></p><h3 id="Topcat-安装"><strong>Topcat 安装</strong></h3><p>天文数据表格操作工具 <a href="https://www.star.bris.ac.uk/~mbt/topcat/">Topcat</a> 可以从 AUR 安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S topcat</span><br></pre></td></tr></table></figure><p>如果 Topcat 在高分辨率屏幕上显示过小,则编辑 <code>~/.starjava.properties</code> 并加入:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sun.java2d.uiScale=2</span><br></pre></td></tr></table></figure><h3 id="Geant4-安装"><strong>Geant4 安装</strong></h3><h4 id="从源代码安装-Geant4"><strong>从源代码安装 Geant4</strong></h4><p>从官网上下载源代码压缩包:</p><p><a href="https://geant4.web.cern.ch/support/download">Geant4 – Download</a></p><p>进入解压后的文件夹</p><p>若要将 Geant4 安装在 <code>(Geant4_directory)</code>,例如 <code>~/Geant4</code>,执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> build</span><br><span class="line"><span class="built_in">cd</span> build</span><br><span class="line">cmake -DCMAKE_INSTALL_PREFIX=(Geant4_directory) -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_QT=ON -DGEANT4_INSTALL_DATA=ON -DGEANT4_BUILD_MULTITHREADED=ON ..</span><br><span class="line">make -j8</span><br><span class="line">make install</span><br></pre></td></tr></table></figure><p>在 <code>~/.bashrc</code> 中添加一行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">source</span> (Geant4_directory)/bin/geant4.sh</span><br></pre></td></tr></table></figure><h4 id="检验是否安装成功"><strong>检验是否安装成功</strong></h4><p>打开 <code>(Geant4_directory)/share/Geant4-(version_number)/examples/basic/B1</code>,执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> build</span><br><span class="line"><span class="built_in">cd</span> build</span><br><span class="line">cmake ..</span><br><span class="line">make -j8</span><br><span class="line">./exampleB1</span><br></pre></td></tr></table></figure><p>如果出现图形交互界面,说明安装成功</p><h3 id="Docker-安装"><strong>Docker 安装</strong></h3><p>可以在官方仓库安装 Docker:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S docker</span><br></pre></td></tr></table></figure><p>之后执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> docker</span><br></pre></td></tr></table></figure><p>再执行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> docker info</span><br></pre></td></tr></table></figure><p>以检查 Docker 运行状态,如果正常显示 Docker 信息说明安装成功</p><h3 id="相机安装(可选)"><strong>相机安装(可选)</strong></h3><p>KDE 官方的相机应用是 Kamoso:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S kamoso</span><br></pre></td></tr></table></figure><p>需要区别于另一个 KDE 应用 Kamera,Kamera 提供了一个配置工具和一个 KIO 工作程序,用于在采用了此协议的数码相机上进行读写操作。</p><h3 id="QQ-安装(可选)"><strong>QQ 安装(可选)</strong></h3><p>可以下载基于 Electron 的官方 QQ Linux 版:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S linuxqq</span><br></pre></td></tr></table></figure><h3 id="微信安装(可选)"><strong>微信安装(可选)</strong></h3><p>推荐安装以下版本:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S wechat-universal-bwrap</span><br></pre></td></tr></table></figure><h3 id="会议软件安装(可选)"><strong>会议软件安装(可选)</strong></h3><h4 id="腾讯会议"><strong>腾讯会议</strong></h4><p>推荐安装官方原生的腾讯会议 Linux 版:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S wemeet-bin</span><br></pre></td></tr></table></figure><h4 id="钉钉"><strong>钉钉</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S dingtalk-bin</span><br></pre></td></tr></table></figure><p>高分辨率屏幕下可以点击头像 >> 设置 >> 全局缩放,选择 150%</p><h4 id="Zoom"><strong>Zoom</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S zoom</span><br></pre></td></tr></table></figure><p>高分辨率屏幕下调整全局缩放需要编辑 <code>~/.config/zoomus.conf</code>,加入一行 <code>scaleFactor=2</code></p><h4 id="Microsoft-Teams"><strong>Microsoft Teams</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S teams</span><br></pre></td></tr></table></figure><h4 id="Slack"><strong>Slack</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S slack-desktop</span><br></pre></td></tr></table></figure><h3 id="音乐软件安装(可选)"><strong>音乐软件安装(可选)</strong></h3><h4 id="网易云音乐"><strong>网易云音乐</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S netease-cloud-music</span><br></pre></td></tr></table></figure><h4 id="QQ-音乐"><strong>QQ 音乐</strong></h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S qqmusic-bin</span><br></pre></td></tr></table></figure><p>默认是暗色主题,右上角皮肤键(衣服图案)可以更改为亮色主题</p><h3 id="办公软件安装(可选)"><strong>办公软件安装(可选)</strong></h3><p>WPS 安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S wps-office-cn wps-office-mui-zh-cn ttf-wps-fonts</span><br></pre></td></tr></table></figure><p>LibreOffice 安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S libreoffice-fresh</span><br></pre></td></tr></table></figure><h3 id="百度网盘安装(可选)"><strong>百度网盘安装(可选)</strong></h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S baidunetdisk-bin</span><br></pre></td></tr></table></figure><h3 id="BitTorrent-客户端安装(可选)"><strong>BitTorrent 客户端安装(可选)</strong></h3><p>推荐使用 KDE 官方客户端 KTorrent:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S ktorrent</span><br></pre></td></tr></table></figure><p>或者同样功能强大且跨平台的 qBittorrent:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S qbittorrent</span><br></pre></td></tr></table></figure><h3 id="Filelight-安装(可选)"><strong>Filelight 安装(可选)</strong></h3><p>Filelight 是一款以图形化方式显示电脑磁盘使用情况的应用程序,可以从官方仓库安装:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">paru -S filelight</span><br></pre></td></tr></table></figure><h3 id="使用-CachyOS-内核(可选)"><strong>使用 CachyOS 内核(可选)</strong></h3><p>首先检查 CPU 是否支持 <code>x86-64-v3</code> 和 <code>x86-64-v4</code> 微架构:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/lib/ld-linux-x86-64.so.2 --<span class="built_in">help</span> | grep supported</span><br></pre></td></tr></table></figure><p>输出结果如:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">x86-64-v4 (supported, searched)</span><br><span class="line">x86-64-v3 (supported, searched)</span><br><span class="line">x86-64-v2 (supported, searched)</span><br></pre></td></tr></table></figure><p>说明支持 <code>x86-64-v3</code> 和 <code>x86-64-v4</code> 微架构</p><p>导入密钥:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman-key --recv-keys F3B607488DB35A47</span><br><span class="line"><span class="built_in">sudo</span> pacman-key --lsign-key F3B607488DB35A47</span><br></pre></td></tr></table></figure><p>编辑 <code>/etc/pacman.conf</code> 文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> vim /etc/pacman.conf</span><br></pre></td></tr></table></figure><p>如果 CPU 支持 <code>x86-64-v3</code>,则添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[cachyos-v3]</span><br><span class="line">Include = /etc/pacman.d/cachyos-v3-mirrorlist</span><br><span class="line">[cachyos]</span><br><span class="line">Include = /etc/pacman.d/cachyos-mirrorlist</span><br></pre></td></tr></table></figure><p>如果 CPU 支持 <code>x86-64-v4</code>,则添加:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[cachyos-v4]</span><br><span class="line">Include = /etc/pacman.d/cachyos-v4-mirrorlist</span><br><span class="line">[cachyos]</span><br><span class="line">Include = /etc/pacman.d/cachyos-mirrorlist</span><br></pre></td></tr></table></figure><p>之后下载想要的内核,例如:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo pacman -S linux-cachyos</span><br></pre></td></tr></table></figure><p>之后重新生成 GRUB 文件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> grub-mkconfig -o /boot/grub/grub.cfg</span><br></pre></td></tr></table></figure><p>重启电脑即可</p><p>参考以下网址:</p><p><a href="https://github.com/CachyOS/linux-cachyos">https://github.com/CachyOS/linux-cachyos</a></p>]]></content>
<categories>
<category> Linux </category>
</categories>
<tags>
<tag> Linux </tag>
</tags>
</entry>
<entry>
<title>Hello World</title>
<link href="/Hello-World/"/>
<url>/Hello-World/</url>
<content type="html"><![CDATA[<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=22636684&auto=1&height=66"></iframe><h3 id="申请-GitHub-Pages"><strong>申请 GitHub Pages</strong></h3><p>新建一个 GitHub 仓库,命名为 <code>(user_name).github.io</code>,隐私设置为 Public</p><p>这就可以获得一个网站 <code>https://(user_name).github.io</code></p><p>可以选择再建一个 GitHub 仓库用来存放博客的源代码</p><h3 id="申请域名"><strong>申请域名</strong></h3><p>这里选择的是阿里云,在<a href="https://wanwang.aliyun.com/">万网</a>输入自己想要的域名并购买</p><p>一般来讲 <code>.top</code> 最便宜,<code>.xyz</code> 次之</p><p>假设域名为 <code>example.top</code>,根据网站提示做好域名实名制认证等流程</p><p>在<a href="https://dc.console.aliyun.com/next/#/domain/list/all-domain">域名控制台</a>中选择:</p><p>域名 >> 操作 >> 解析</p><p>解析中添加一条记录:</p><ul><li>记录类型:CNAME</li><li>主机记录自选</li><li>解析线路选择“默认”</li><li>记录值选择 <code>(user_name).github.io</code></li><li>TTL选择“10分钟”</li></ul><p>在名为 <code>(user_name).github.io</code> 的仓库,新建一个文件,文件名为 <code>CNAME</code>,填入 <code>blog.example.top</code> ,通过 GitHub 的网络检测后就可以使用</p><p>此时可以分别在浏览器中输入 <code>(user_name).github.io</code> 和 <code>blog.example.top</code>,如果能显示 <code>README.md</code> 中的内容则设置成功</p><h3 id="Hexo-搭建"><strong>Hexo 搭建</strong></h3><p><a href="https://hexo.io/zh-cn/index.html">Hexo</a> 是一个快速、简洁且高效的博客框架,建议在 Linux 上搭建</p><p>首先下载 Node-js 和 npm:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> pacman -S nodejs npm</span><br></pre></td></tr></table></figure><p>之后在 npm 中下载 Hexo 框架:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo</span><br></pre></td></tr></table></figure><p>在 <code>~/.bashrc</code> 中加入一行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">PATH=~/node_modules/.bin:<span class="variable">$PATH</span></span><br></pre></td></tr></table></figure><p>执行 <code>source ~/.bashrc</code> 更新环境变量</p><p>创建博客文件夹 <code>(blog_folder)</code>,运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo init (blog_folder)</span><br></pre></td></tr></table></figure><p>这一步必须要求 <code>(blog_folder)</code> 为空文件夹</p><p>之后运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> (blog_folder)</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>按照 <a href="https://hexo.io/zh-cn/docs/">Hexo 文档</a>进行网站全局配置,在 <code>(blog_folder)/_config.yml</code> 下修改:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">url:</span> <span class="string">https://blog.example.top</span></span><br><span class="line"><span class="attr">permalink:</span> <span class="string">:title/</span></span><br></pre></td></tr></table></figure><p><strong>所有的 npm 和 hexo 命令都要在 <code>(blog_folder)</code> 下执行</strong></p><h3 id="全局配置"><strong>全局配置</strong></h3><p>添加文章:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new post hello</span><br></pre></td></tr></table></figure><p>这会生成 <code>blog.example.top/hello</code></p><p>在子文件夹下添加文章:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new post --path hello/world</span><br></pre></td></tr></table></figure><p>这生成 <code>blog.example.top/hello/world</code></p><h3 id="调试并预览网站"><strong>调试并预览网站</strong></h3><p>在博客目录运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean && hexo s --debug</span><br></pre></td></tr></table></figure><p>之后可以在 <a href="http://localhost:4000/">http://localhost:4000/</a> 查看网站预览</p><h3 id="部署到-GitHub"><strong>部署到 GitHub</strong></h3><p>安装 <a href="https://github.com/hexojs/hexo-deployer-git">hexo-deployer-git</a>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git</span><br></pre></td></tr></table></figure><p>修改配置 <code>_config.yml</code>:(不要忘记设置更新分支 <code>branch</code> 的值)</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line"> <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line"> <span class="attr">repo:</span> <span class="string">https://oauth2:(user_token)@github.com/(user_name)/(user_name).github.io</span></span><br><span class="line"> <span class="attr">branch:</span> <span class="string">(branch_name)</span></span><br></pre></td></tr></table></figure><p>从2021年8月13日起,GitHub 不再支持通过邮箱和密码校验身份,需要使用 <a href="https://github.com/settings/tokens">Personal Access Token</a> 或者用 <a href="https://github.com/settings/ssh/new">SSH</a> 密钥登陆 GitHub 才能向仓库上传代码</p><p>申请 Personal Access Token 时记得勾选 <code>repo</code> 部分的权限</p><p>如果使用 SSH 密钥,<code>repo</code> 一栏填写 <code>[email protected]:(user_name)/(user_name).github.io</code></p><p>之后在博客目录运行:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean && hexo deploy</span><br></pre></td></tr></table></figure><p>即可部署到 GitHub</p><p>查看 <code>(user_name).github.io</code> 和 <code>blog.example.top</code> 上的网页是否部署成功</p><p>注意此时原有的自定义域名会被覆盖掉,如果 GitHub Pages 需要使用 CNAME 文件自定义域名,则创建文本文件,文件名为 <code>CNAME</code>,文件中只需要写一行自定义域名 <code>blog.example.top</code> 即可</p><p>将 CNAME 文件置于 <code>(blog_folder)/source/</code> 文件夹,此时 <code>hexo deploy</code> 会一并推送至部署分支</p><p>若要在 GitHub 的 <code>(user_name).github.io</code> 仓库中创建 <code>README.md</code> 文件,也需将其置于 <code>(blog_folder)/source/</code> 文件夹中</p><p>之后需要在 <code>(blog_folder)/_config.yml</code> 中配置 <code>skip_render: README.md</code>,否则会被渲染为 HTML 文件</p><h3 id="Butterfly-主题"><strong>Butterfly 主题</strong></h3><p>我选择的是 <a href="https://butterfly.js.org/">Butterfly</a> 主题,安装方法:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-theme-butterfly</span><br></pre></td></tr></table></figure><p>这样的话它会保存在 <code>(blog_folder)/node_modules/hexo-theme-butterfly</code>,更新主题需要在 <code>(blog_folder)</code> 下执行 <code>npm update hexo-theme-butterfly</code></p><p>可以在 <code>(blog_folder)/themes</code> 中创建软链接:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ln</span> -s ../node_modules/hexo-theme-butterfly/</span><br></pre></td></tr></table></figure><p>这样主题目录就是 <code>(blog_folder)/theme/hexo-theme-butterfly</code></p><p>可以卸载自带的默认主题 Landscape:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm uninstall hexo-theme-landscape</span><br></pre></td></tr></table></figure><p>在 <code>(blog_folder)/_config.yml</code> 下修改:<code>theme:butterfly</code></p><p>在博客目录下创建 <code>_config.butterfly.yml</code> 文件,并复制主题目录下 <code>_config.yml</code> 的内容</p><p>以后如果修改任何主题配置,都只需修改 <code>_config.butterfly.yml</code> 的配置即可,其优先级比主题目录下的 <code>_config.yml</code> 高,但不要删除主题目录下的 <code>_config.yml</code>,Hexo 会自动合并自定义设置和默认设置</p><p>按照 <a href="https://butterfly.js.org">Butterfly 文档</a>进行网站全局配置,在 <code>(blog_folder)/_config.butterfly.yml</code> 下修改如下:</p><p><a href="https://github.com/Firestar-Reimu/Blog-source/blob/main/_config.butterfly.yml">_config.butterfly.yml – Blog-source</a></p><h3 id="自定义字体"><strong>自定义字体</strong></h3><p>本站的主题字体设置如下:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">font:</span></span><br><span class="line"> <span class="attr">font-family:</span> <span class="string">Noto</span> <span class="string">Sans</span> <span class="string">SC,</span> <span class="string">PingFang</span> <span class="string">SC,</span> <span class="string">Microsoft</span> <span class="string">Yahei,</span> <span class="string">sans-serif</span></span><br><span class="line"> <span class="attr">code-font-family:</span> <span class="string">JetBrains</span> <span class="string">Mono,</span> <span class="string">Roboto</span> <span class="string">Mono,</span> <span class="string">Hack,</span> <span class="string">Menlo,</span> <span class="string">Consolas,</span> <span class="string">monospace</span></span><br></pre></td></tr></table></figure><p>可以在 <code>_config.butterfly.yml</code> 中找到 <code>Inject</code> 一节,这里可以插入自定义的 CSS 文件,编辑如下:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">inject:</span></span><br><span class="line"> <span class="attr">head:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><link</span> <span class="string">rel="preconnect"</span> <span class="string">href="https://fonts.googleapis.com"></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><link</span> <span class="string">rel="preconnect"</span> <span class="string">href="https://fonts.gstatic.com"</span> <span class="string">crossorigin></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><link</span> <span class="string">href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700&family=JetBrains+Mono&family=Roboto+Mono&&display=swap"</span> <span class="string">rel="stylesheet"></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><link</span> <span class="string">rel="stylesheet"</span> <span class="string">href="/css/font.css"></span></span><br></pre></td></tr></table></figure><p>其中前三个是从 <a href="https://fonts.google.com/">Google Font</a> 中引入备用的字体文件</p><p>最后一个为新创建的 <code>(blog_folder)/source/css/font.css</code>,其中写入:</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">b</span>,</span><br><span class="line"><span class="selector-tag">strong</span> {</span><br><span class="line"> <span class="attribute">font-weight</span>: bold;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#article-container</span> pre,</span><br><span class="line"><span class="selector-id">#article-container</span> <span class="selector-tag">code</span> {</span><br><span class="line"> <span class="attribute">font-variant-ligatures</span>: none;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>第一段是防止网页的粗体过粗,第二段是禁用代码块中字体的连字属性</p><h3 id="数学公式显示"><strong>数学公式显示</strong></h3><p>按照 <a href="https://butterfly.js.org/posts/ceeb73f">Butterfly 文档</a>的指南配置即可,这里选择的是更快更轻量的 <a href="https://katex.org/">KaTeX</a></p><p>首先修改 <code>.config.butterfly.yml</code>,启用 KaTeX:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">katex:</span></span><br><span class="line"> <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"> <span class="attr">per_page:</span> <span class="literal">false</span></span><br><span class="line"> <span class="attr">hide_scrollbar:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure><p>之后将渲染器改为 <code>hexo-renderer-markdown-it</code> 并安装相应插件:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">npm uninstall hexo-renderer-marked</span><br><span class="line">npm install hexo-renderer-markdown-it</span><br><span class="line">npm install katex @renbaoshuo/markdown-it-katex</span><br></pre></td></tr></table></figure><p>最后在博客目录的 <code>.config.yml</code> 中加入:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">markdown:</span></span><br><span class="line"> <span class="attr">plugins:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">'@renbaoshuo/markdown-it-katex'</span></span><br></pre></td></tr></table></figure><h3 id="配置本地搜索"><strong>配置本地搜索</strong></h3><p>下载插件 <code>hexo-generator-search</code>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-generator-search</span><br></pre></td></tr></table></figure><p>之后修改 <code>.config.butterfly.yml</code>,启用本地搜索:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">local_search:</span></span><br><span class="line"> <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"> <span class="attr">preload:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure><h3 id="显示复选框"><strong>显示复选框</strong></h3><p>下载插件 <code>markdown-it-task-lists</code>:(也可以换成其它相同功能的插件)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install markdown-it-task-lists</span><br></pre></td></tr></table></figure><p>之后在博客目录的 <code>.config.yml</code> 中加入:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">markdown:</span></span><br><span class="line"> <span class="attr">plugins:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="string">markdown-it-task-lists</span></span><br></pre></td></tr></table></figure><h3 id="禁用-Nunjucks-标签"><strong>禁用 Nunjucks 标签</strong></h3><p>Hexo 使用 <a href="https://mozilla.github.io/nunjucks/">Nunjucks</a> 来解析文章,内容若包含 <code>{{</code>、<code>}}</code>、<code>{%</code>、<code>%}</code>、<code>{#</code>、<code>#}</code> 会无法渲染,可以用以下两种方法禁用 Nunjucks 标签:</p><p>第一种是在文章的 <a href="https://hexo.io/zh-cn/docs/front-matter">front-matter</a> 中写入 <code>disableNunjucks:true</code></p><p>第二种是用 <code>{% raw %}</code> 和 <code>{% endraw %}</code> 包裹无法渲染的部分,例如 <code>{% raw %} {% %} {% endraw %}</code></p><h3 id="在导航菜单创建一个-GitHub-链接"><strong>在导航菜单创建一个 GitHub 链接</strong></h3><p>修改 <code>.config.butterfly.yml</code> 中 <code>menu</code> 一栏,其格式为 <code>(name): (url) || (icon)</code>:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">menu:</span></span><br><span class="line"> <span class="string">源码:</span> <span class="string">https://github.com/Firestar-Reimu/firestar-reimu.github.io</span> <span class="string">||</span> <span class="string">fab</span> <span class="string">fa-github</span></span><br></pre></td></tr></table></figure><p>其中图标 <code>icon</code> 可以在 <a href="https://fontawesome.com/">FontAwesome</a> 中找到</p><h3 id="插入图片"><strong>插入图片</strong></h3><p>图片放在博客目录的 <code>(blog_folder)/source/img/</code> 下,插入图片的标准的格式为:</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">![<span class="string">(name)</span>](<span class="link">../img/(your_picture</span>))</span><br></pre></td></tr></table></figure><p>但是这样无法自定义图片大小,也可以使用 HTML 语法,例如:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">img</span> <span class="attr">src</span>=<span class="string">"../img/(your_picture)"</span> <span class="attr">width</span>=<span class="string">"50%"</span> <span class="attr">height</span>=<span class="string">"50%"</span>></span></span><br></pre></td></tr></table></figure><h3 id="插入网易云音乐"><strong>插入网易云音乐</strong></h3><p>在网易云音乐的网页版上选择一首音乐(不能是 VIP 音乐),点进页面 <code>https://music.163.com/#/song?id=(music_id)</code> 后选择“生成外链播放器”,“自动播放”一栏自选,再复制 HTML 代码:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">iframe</span> <span class="attr">frameborder</span>=<span class="string">"no"</span> <span class="attr">border</span>=<span class="string">"0"</span> <span class="attr">marginwidth</span>=<span class="string">"0"</span> <span class="attr">marginheight</span>=<span class="string">"0"</span> <span class="attr">width</span>=<span class="string">330</span> <span class="attr">height</span>=<span class="string">86</span> <span class="attr">src</span>=<span class="string">"//music.163.com/outchain/player?type=2&id=(music_id)&auto=1&height=66"</span>></span><span class="tag"></<span class="name">iframe</span>></span></span><br></pre></td></tr></table></figure><p>直接粘贴到 Markdown 文件内即可</p><h3 id="数学公式测试"><strong>数学公式测试</strong></h3><p><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><munder><mrow><mi>lim</mi><mo></mo></mrow><mrow><mi>n</mi><mo>→</mo><mi mathvariant="normal">∞</mi></mrow></munder><msup><mrow><mo fence="true">(</mo><mn>1</mn><mo>+</mo><mstyle displaystyle="true" scriptlevel="0"><mfrac><mn>1</mn><mi>n</mi></mfrac></mstyle><mo fence="true">)</mo></mrow><mi>n</mi></msup><mo>=</mo><mi mathvariant="normal">e</mi></mrow><annotation encoding="application/x-tex">\lim\limits_{n\to\infty}\left(1+\dfrac{1}{n}\right)^n=\mathrm{e}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.4543em;vertical-align:-0.95em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.6944em;"><span style="top:-2.4em;margin-left:0em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mrel mtight">→</span><span class="mord mtight">∞</span></span></span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span><span class="mop">lim</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.7em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">n</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.5043em;"><span style="top:-3.9029em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathrm">e</span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi mathvariant="normal">∞</mi></msubsup><mstyle displaystyle="true" scriptlevel="0"><mfrac><msup><mi>x</mi><mi>n</mi></msup><mrow><mi>n</mi><mo stretchy="false">!</mo></mrow></mfrac></mstyle><mo>=</mo><msup><mi mathvariant="normal">e</mi><mi>x</mi></msup></mrow><annotation encoding="application/x-tex">\sum\limits_{n=0}^{\infty}\dfrac{x^n}{n!}=\mathrm{e}^x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.3185em;vertical-align:-0.9671em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3514em;"><span style="top:-2.1329em;margin-left:0em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span><span class="mop op-symbol small-op">∑</span></span></span><span style="top:-3.95em;margin-left:0em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">∞</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9671em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3414em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="mclose">!</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6644em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6644em;"></span><span class="mord"><span class="mord mathrm">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6644em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span></span></span></span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mfrac><mi mathvariant="normal">d</mi><mrow><mi mathvariant="normal">d</mi><mi>t</mi></mrow></mfrac><mrow><mo fence="true">(</mo><mfrac><mrow><mi mathvariant="normal">∂</mi><msup><mi>L</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup></mrow><mrow><mi mathvariant="normal">∂</mi><mover accent="true"><mi>p</mi><mo>˙</mo></mover></mrow></mfrac><mo fence="true">)</mo></mrow><mo>−</mo><mfrac><mrow><mi mathvariant="normal">∂</mi><msup><mi>L</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup></mrow><mrow><mi mathvariant="normal">∂</mi><mi>p</mi></mrow></mfrac><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\dfrac{\mathrm{d}}{\mathrm{d}t}\left(\dfrac{\partial L'}{\partial \dot{p}}\right) - \dfrac{\partial L'}{\partial p} = 0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.4em;vertical-align:-0.95em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3714em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathrm">d</span><span class="mord mathnormal">t</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathrm">d</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4289em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord" style="margin-right:0.05556em;">∂</span><span class="mord accent"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.6679em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal">p</span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.0556em;"><span class="mord">˙</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.1944em;"><span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord" style="margin-right:0.05556em;">∂</span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.8804em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:2.3093em;vertical-align:-0.8804em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4289em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord" style="margin-right:0.05556em;">∂</span><span class="mord mathnormal">p</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord" style="margin-right:0.05556em;">∂</span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.8804em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">0</span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>f</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi><mo>+</mo><msup><mrow><mo fence="true">(</mo><mfrac><mn>1</mn><mi>x</mi></mfrac><mo>+</mo><mn>3</mn><mi>x</mi><mo fence="true">)</mo></mrow><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">f(x) = x + \left(\frac{1}{x} + 3x\right)^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6667em;vertical-align:-0.0833em;"></span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:2.604em;vertical-align:-0.95em;"></span><span class="minner"><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">x</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">3</span><span class="mord mathnormal">x</span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.654em;"><span style="top:-3.9029em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>f</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.36em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>x</mi><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>x</mi><mo><</mo><mn>0</mn></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>x</mi><mo>></mo><mn>0</mn></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">f(x)=\begin{cases}x, & x<0 \\1, & x>0\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:3em;vertical-align:-1.25em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi mathvariant="bold-italic">a</mi><mo>⋅</mo><mo stretchy="false">(</mo><mi mathvariant="bold-italic">b</mi><mo>×</mo><mi mathvariant="bold-italic">c</mi><mo stretchy="false">)</mo><mo>=</mo><mi mathvariant="bold-italic">b</mi><mo>⋅</mo><mo stretchy="false">(</mo><mi mathvariant="bold-italic">c</mi><mo>×</mo><mi mathvariant="bold-italic">a</mi><mo stretchy="false">)</mo><mo>=</mo><mi mathvariant="bold-italic">c</mi><mo>⋅</mo><mo stretchy="false">(</mo><mi mathvariant="bold-italic">a</mi><mo>×</mo><mi mathvariant="bold-italic">b</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\boldsymbol{a}\cdot(\boldsymbol{b}\times\boldsymbol{c}) = \boldsymbol{b}\cdot(\boldsymbol{c}\times\boldsymbol{a}) = \boldsymbol{c}\cdot(\boldsymbol{a}\times\boldsymbol{b})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4445em;"></span><span class="mord"><span class="mord"><span class="mord boldsymbol">a</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord boldsymbol">b</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord"><span class="mord boldsymbol">c</span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord"><span class="mord"><span class="mord boldsymbol">b</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord boldsymbol">c</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord"><span class="mord boldsymbol">a</span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.4445em;"></span><span class="mord"><span class="mord"><span class="mord boldsymbol">c</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord"><span class="mord boldsymbol">a</span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord"><span class="mord boldsymbol">b</span></span></span><span class="mclose">)</span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><msub><mi mathvariant="normal">∂</mi><mi>i</mi></msub><mi>r</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><msub><mi mathvariant="normal">∂</mi><mi>i</mi></msub><msqrt><mrow><mo stretchy="false">(</mo><mi>x</mi><mo>−</mo><msup><mi>x</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mo>+</mo><mo stretchy="false">(</mo><mi>y</mi><mo>−</mo><msup><mi>y</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mo>+</mo><mo stretchy="false">(</mo><mi>z</mi><mo>−</mo><msup><mi>z</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow></msqrt></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mn>2</mn><mo stretchy="false">(</mo><mi>x</mi><mo>−</mo><msup><mi>x</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mo stretchy="false">)</mo></mrow><mrow><mn>2</mn><msqrt><mrow><mo stretchy="false">(</mo><mi>x</mi><mo>−</mo><msup><mi>x</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mo>+</mo><mo stretchy="false">(</mo><mi>y</mi><mo>−</mo><msup><mi>y</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mo>+</mo><mo stretchy="false">(</mo><mi>z</mi><mo>−</mo><msup><mi>z</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow></msqrt></mrow></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mi>x</mi><mo>−</mo><msup><mi>x</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup></mrow><mi>r</mi></mfrac></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*} \partial_i r &= \partial_i \sqrt{(x-x')^2 + (y-y')^2 + (z-z')^2} \\ &= \frac{2(x-x')}{2\sqrt{(x-x')^2 + (y-y')^2 + (z-z')^2}} \\ &= \frac{x-x'}{r}\end{align*}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:6.9177em;vertical-align:-3.2088em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.7088em;"><span style="top:-6.1538em;"><span class="pstrut" style="height:3.4289em;"></span><span class="mord"><span class="mord"><span class="mord" style="margin-right:0.05556em;">∂</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0556em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span></span></span><span style="top:-4.065em;"><span class="pstrut" style="height:3.4289em;"></span><span class="mord"></span></span><span style="top:-1.2061em;"><span class="pstrut" style="height:3.4289em;"></span><span class="mord"></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:3.2088em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.7088em;"><span style="top:-6.1538em;"><span class="pstrut" style="height:3.4289em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mord" style="margin-right:0.05556em;">∂</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0556em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.9839em;"><span class="svg-align" style="top:-3.2em;"><span class="pstrut" style="height:3.2em;"></span><span class="mord" style="padding-left:1em;"><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6779em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6779em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.04398em;">z</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6779em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span><span style="top:-2.9439em;"><span class="pstrut" style="height:3.2em;"></span><span class="hide-tail" style="min-width:1.02em;height:1.28em;"><svg xmlns="http://www.w3.org/2000/svg" width="400em" height="1.28em" viewBox="0 0 400000 1296" preserveAspectRatio="xMinYMin slice"><path d="M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067l0 -0c4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60zM1001 80h400000v40h-400000z"/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2561em;"><span></span></span></span></span></span></span></span><span style="top:-4.065em;"><span class="pstrut" style="height:3.4289em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4289em;"><span style="top:-2.175em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.935em;"><span class="svg-align" style="top:-3.2em;"><span class="pstrut" style="height:3.2em;"></span><span class="mord" style="padding-left:1em;"><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6779em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6779em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.04398em;">z</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6779em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span><span style="top:-2.895em;"><span class="pstrut" style="height:3.2em;"></span><span class="hide-tail" style="min-width:1.02em;height:1.28em;"><svg xmlns="http://www.w3.org/2000/svg" width="400em" height="1.28em" viewBox="0 0 400000 1296" preserveAspectRatio="xMinYMin slice"><path d="M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067l0 -0c4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60zM1001 80h400000v40h-400000z"/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.305em;"><span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.13em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.2061em;"><span class="pstrut" style="height:3.4289em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4289em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">r</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:3.2088em;"><span></span></span></span></span></span></span></span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>I</mi><mi>r</mi></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>π</mi></mrow></mfrac><mo>∮</mo><msub><mi>p</mi><mi>r</mi></msub><mtext> </mtext><mi mathvariant="normal">d</mi><mi>r</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>π</mi></mrow></mfrac><msubsup><mo>∫</mo><mn>0</mn><mrow><mn>2</mn><mi>π</mi></mrow></msubsup><msub><mi>p</mi><mi>r</mi></msub><mfrac><mrow><mi mathvariant="normal">d</mi><mi>r</mi></mrow><mrow><mi mathvariant="normal">d</mi><mi>θ</mi></mrow></mfrac><mtext> </mtext><mi mathvariant="normal">d</mi><mi>θ</mi><mo>=</mo><mfrac><mi>λ</mi><mi>ω</mi></mfrac><mo>+</mo><msqrt><mrow><mn>2</mn><mi>m</mi><mi>κ</mi></mrow></msqrt></mrow><annotation encoding="application/x-tex">I_r = \frac{1}{2\pi}\oint p_r \,\mathrm{d}r = \frac{1}{2\pi}\int_0^{2\pi} p_r \frac{\mathrm{d}r}{\mathrm{d}\theta}\,\mathrm{d}\theta = \frac{\lambda}{\omega} + \sqrt{2m\kappa}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.2222em;vertical-align:-0.8622em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop op-symbol large-op" style="margin-right:0.44445em;position:relative;top:-0.0011em;">∮</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.476em;vertical-align:-0.9119em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord mathnormal" style="margin-right:0.03588em;">π</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop"><span class="mop op-symbol large-op" style="margin-right:0.44445em;position:relative;top:-0.0011em;">∫</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.564em;"><span style="top:-1.7881em;margin-left:-0.4445em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span><span style="top:-3.8129em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="mord mathnormal mtight" style="margin-right:0.03588em;">π</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9119em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3714em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathrm">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathrm">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm">d</span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.0574em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3714em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">ω</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">λ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.04em;vertical-align:-0.0839em;"></span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.9561em;"><span class="svg-align" style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord" style="padding-left:0.833em;"><span class="mord">2</span><span class="mord mathnormal">mκ</span></span></span><span style="top:-2.9161em;"><span class="pstrut" style="height:3em;"></span><span class="hide-tail" style="min-width:0.853em;height:1.08em;"><svg xmlns="http://www.w3.org/2000/svg" width="400em" height="1.08em" viewBox="0 0 400000 1080" preserveAspectRatio="xMinYMin slice"><path d="M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,-221l0 -0c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47zM834 80h400000v40h-400000z"/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.0839em;"><span></span></span></span></span></span></span></span></span></span></p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mi>H</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mi>T</mi><mo>+</mo><mi>V</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>m</mi><mo stretchy="false">(</mo><mover accent="true"><mi>x</mi><mo>˙</mo></mover><mo>+</mo><mover accent="true"><mi>θ</mi><mo>˙</mo></mover><mi>l</mi><mi>cos</mi><mo></mo><mi>θ</mi><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>m</mi><mo stretchy="false">(</mo><mn>2</mn><mi>a</mi><mi>x</mi><mover accent="true"><mi>x</mi><mo>˙</mo></mover><mo>+</mo><mover accent="true"><mi>θ</mi><mo>˙</mo></mover><mi>l</mi><mi>sin</mi><mo></mo><mi>θ</mi><msup><mo stretchy="false">)</mo><mn>2</mn></msup><mo>+</mo><mi>m</mi><mi>g</mi><mo stretchy="false">(</mo><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>−</mo><mi>l</mi><mi>cos</mi><mo></mo><mi>θ</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>m</mi><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mn>4</mn><msup><mi>a</mi><mn>2</mn></msup><msup><mi>x</mi><mn>2</mn></msup><mo stretchy="false">)</mo><msup><mover accent="true"><mi>x</mi><mo>˙</mo></mover><mn>2</mn></msup><mo>−</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>m</mi><msup><mi>l</mi><mn>2</mn></msup><msup><mover accent="true"><mi>θ</mi><mo>˙</mo></mover><mn>2</mn></msup><mo>+</mo><mi>m</mi><mi>l</mi><mo stretchy="false">(</mo><mi>cos</mi><mo></mo><mi>θ</mi><mo>+</mo><mn>2</mn><mi>a</mi><mi>x</mi><mi>sin</mi><mo></mo><mi>θ</mi><mo stretchy="false">)</mo><mover accent="true"><mi>x</mi><mo>˙</mo></mover><mover accent="true"><mi>θ</mi><mo>˙</mo></mover><mo>+</mo><mi>m</mi><mi>g</mi><mo stretchy="false">(</mo><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>−</mo><mi>l</mi><mi>cos</mi><mo></mo><mi>θ</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mi>A</mi><mn>2</mn></mfrac><mo>⋅</mo><msup><mrow><mo fence="true">(</mo><mfrac><mrow><mi>D</mi><msub><mi>p</mi><mi>x</mi></msub><mo>−</mo><mi>B</mi><msub><mi>p</mi><mi>θ</mi></msub></mrow><mrow><mi>A</mi><mi>D</mi><mo>−</mo><mi>B</mi><mi>C</mi></mrow></mfrac><mo fence="true">)</mo></mrow><mn>2</mn></msup><mo>+</mo><mfrac><mi>D</mi><mn>2</mn></mfrac><mo>⋅</mo><msup><mrow><mo fence="true">(</mo><mfrac><mrow><mi>A</mi><msub><mi>p</mi><mi>θ</mi></msub><mo>−</mo><mi>C</mi><msub><mi>p</mi><mi>x</mi></msub></mrow><mrow><mi>A</mi><mi>D</mi><mo>−</mo><mi>B</mi><mi>C</mi></mrow></mfrac><mo fence="true">)</mo></mrow><mn>2</mn></msup><mo>+</mo><mfrac><mrow><mi>B</mi><mo stretchy="false">(</mo><mi>D</mi><msub><mi>p</mi><mi>x</mi></msub><mo>−</mo><mi>B</mi><msub><mi>p</mi><mi>θ</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>A</mi><msub><mi>p</mi><mi>θ</mi></msub><mo>−</mo><mi>C</mi><msub><mi>p</mi><mi>x</mi></msub><mo stretchy="false">)</mo></mrow><mrow><mo stretchy="false">(</mo><mi>A</mi><mi>D</mi><mo>−</mo><mi>B</mi><mi>C</mi><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow></mfrac><mo>+</mo><mi>m</mi><mi>g</mi><mo stretchy="false">(</mo><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>−</mo><mi>l</mi><mi>cos</mi><mo></mo><mi>θ</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mi>D</mi><msubsup><mi>p</mi><mi>x</mi><mn>2</mn></msubsup><mo>+</mo><mi>A</mi><msubsup><mi>p</mi><mi>θ</mi><mn>2</mn></msubsup><mo>−</mo><mo stretchy="false">(</mo><mi>B</mi><mo>+</mo><mi>C</mi><mo stretchy="false">)</mo><msub><mi>p</mi><mi>x</mi></msub><msub><mi>p</mi><mi>θ</mi></msub></mrow><mrow><mn>2</mn><mo stretchy="false">(</mo><mi>A</mi><mi>D</mi><mo>−</mo><mi>B</mi><mi>C</mi><mo stretchy="false">)</mo></mrow></mfrac><mo>+</mo><mi>m</mi><mi>g</mi><mo stretchy="false">(</mo><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>−</mo><mi>l</mi><mi>cos</mi><mo></mo><mi>θ</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><mrow><mo stretchy="false">[</mo><msub><mi>p</mi><mi>θ</mi></msub><mo separator="true">,</mo><mtext> </mtext><msub><mi>p</mi><mi>x</mi></msub><mo stretchy="false">]</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.16em" columnalign="center center" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>A</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>B</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>C</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>D</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.16em" columnalign="center" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>p</mi><mi>θ</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>p</mi><mi>x</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><mrow><mn>2</mn><mrow><mo fence="true">∣</mo><mtable rowspacing="0.16em" columnalign="center center" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>A</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>B</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>C</mi></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>D</mi></mstyle></mtd></mtr></mtable><mo fence="true">∣</mo></mrow></mrow></mfrac><mo>+</mo><mi>m</mi><mi>g</mi><mo stretchy="false">(</mo><mi>a</mi><msup><mi>x</mi><mn>2</mn></msup><mo>−</mo><mi>l</mi><mi>cos</mi><mo></mo><mi>θ</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*} H &= T+V \\ &= \frac{1}{2}m(\dot{x} + \dot{\theta}l\cos\theta)^2 + \frac{1}{2}m(2ax\dot{x} + \dot{\theta}l\sin\theta)^2 + mg(ax^2 - l\cos\theta) \\ &= \frac{1}{2}m(1+4a^2x^2)\dot{x}^2 - \frac{1}{2}ml^2\dot{\theta}^2 + ml(\cos\theta + 2ax\sin\theta)\dot{x}\dot{\theta} + mg(ax^2 - l\cos\theta) \\ &= \frac{A}{2}\cdot\left(\frac{Dp_x - Bp_\theta}{AD - BC}\right)^2 + \frac{D}{2}\cdot\left(\frac{Ap_\theta - Cp_x}{AD - BC}\right)^2 + \frac{B(Dp_x - Bp_\theta)(Ap_\theta - Cp_x)}{(AD - BC)^2} + mg(ax^2 - l\cos\theta) \\ &= \frac{Dp_x^2 + Ap_\theta^2 - (B+C)p_x p_\theta}{2(AD - BC)} + mg(ax^2 - l\cos\theta) \\ &= \frac{[p_\theta,\ p_x]\begin{bmatrix}A & B \\ C & D\end{bmatrix}\begin{bmatrix}p_\theta \\ p_x\end{bmatrix}}{2\begin{vmatrix}A & B \\ C & D\end{vmatrix}} + mg(ax^2 - l\cos\theta)\end{align*}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:17.1261em;vertical-align:-8.313em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:8.813em;"><span style="top:-12.7631em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.08125em;">H</span></span></span><span style="top:-10.7816em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"></span></span><span style="top:-8.4742em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"></span></span><span style="top:-5.8342em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"></span></span><span style="top:-3.093em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"></span></span><span style="top:0.933em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:8.313em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:8.813em;"><span style="top:-12.7631em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.22222em;">V</span></span></span><span style="top:-10.7816em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord mathnormal">m</span><span class="mopen">(</span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6679em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal">x</span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.1111em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.9313em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span></span><span style="top:-3.2634em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.0556em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord mathnormal">m</span><span class="mopen">(</span><span class="mord">2</span><span class="mord mathnormal">a</span><span class="mord mathnormal">x</span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6679em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal">x</span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.1111em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.9313em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span></span><span style="top:-3.2634em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.0556em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">sin</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathnormal">a</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span><span style="top:-8.4742em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord mathnormal">m</span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">4</span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mclose">)</span><span class="mord"><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6679em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal">x</span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.1111em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord mathnormal">m</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord"><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.9313em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span></span><span style="top:-3.2634em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.0556em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mopen">(</span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">2</span><span class="mord mathnormal">a</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">sin</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6679em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal">x</span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.1111em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.9313em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span></span><span style="top:-3.2634em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.0556em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathnormal">a</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span><span style="top:-5.8342em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">A</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="minner"><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">BC</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.05017em;">B</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.7693em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.654em;"><span style="top:-3.9029em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">D</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">⋅</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="minner"><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">BC</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">A</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">C</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.7693em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.654em;"><span style="top:-3.9029em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">BC</span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05017em;">B</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.05017em;">B</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord mathnormal">A</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">C</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathnormal">a</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span><span style="top:-3.093em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4911em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mopen">(</span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">BC</span><span class="mclose">)</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.453em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.247em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">A</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.4169em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.2831em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.05017em;">B</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.07153em;">C</span><span class="mclose">)</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathnormal">a</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span><span style="top:0.933em;"><span class="pstrut" style="height:4.79em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.79em;"><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord">2</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.45em;"><span class="pstrut" style="height:4.4em;"></span><span style="width:0.333em;height:2.400em;"><svg xmlns="http://www.w3.org/2000/svg" width="0.333em" height="2.400em" viewBox="0 0 333 2400"><path d="M145 15 v585 v1200 v585 c2.667,10,9.667,15,21,15c10,0,16.667,-5,20,-15 v-585 v-1200 v-585 c-2.667,-10,-9.667,-15,-21,-15c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v1200 v585 h43z"/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">A</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.07153em;">C</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05017em;">B</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">D</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span></span><span class="mclose"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.45em;"><span class="pstrut" style="height:4.4em;"></span><span style="width:0.333em;height:2.400em;"><svg xmlns="http://www.w3.org/2000/svg" width="0.333em" height="2.400em" viewBox="0 0 333 2400"><path d="M145 15 v585 v1200 v585 c2.667,10,9.667,15,21,15c10,0,16.667,-5,20,-15 v-585 v-1200 v-585 c-2.667,-10,-9.667,-15,-21,-15c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v1200 v585 h43z"/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span></span></span></span><span style="top:-3.68em;"><span class="pstrut" style="height:3.45em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-4.79em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mopen">[</span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace"> </span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">]</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">A</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.07153em;">C</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05017em;">B</span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">D</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.41em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal">p</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">x</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.95em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:2.29em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mopen">(</span><span class="mord mathnormal">a</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mop">cos</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:8.313em;"><span></span></span></span></span></span></span></span></span></span></span></span></p><h3 id="图片测试"><strong>图片测试</strong></h3><img src="../img/hello_world_reimu.jpg" width="50%" height="50%"><h3 id="代码高亮测试"><strong>代码高亮测试</strong></h3><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">time_now</span>(<span class="params"></span>) {</span><br><span class="line"> <span class="keyword">var</span> today = <span class="keyword">new</span> <span class="title class_">Date</span>();</span><br><span class="line"> <span class="keyword">var</span> h = today.<span class="title function_">getHours</span>();</span><br><span class="line"> <span class="keyword">var</span> m = today.<span class="title function_">getMinutes</span>();</span><br><span class="line"> <span class="keyword">var</span> s = today.<span class="title function_">getSeconds</span>();</span><br><span class="line"> m = <span class="title function_">check_time</span>(m);</span><br><span class="line"> s = <span class="title function_">check_time</span>(s);</span><br><span class="line"> <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">"clock"</span>).<span class="property">innerHTML</span> = h + <span class="string">":"</span> + m + <span class="string">":"</span> + s;</span><br><span class="line"> t = <span class="built_in">setTimeout</span>(<span class="keyword">function</span> (<span class="params"></span>) {</span><br><span class="line"> <span class="title function_">time_now</span>();</span><br><span class="line"> }, <span class="number">100</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">Chebyshev</span>(<span class="params">func, n, x_array</span>):</span><br><span class="line"> x = np.array([np.cos(np.pi * (m + <span class="number">0.5</span>) / n) <span class="keyword">for</span> m <span class="keyword">in</span> <span class="built_in">range</span>(n)])</span><br><span class="line"> y = func(x)</span><br><span class="line"> c = np.zeros(n)</span><br><span class="line"> <span class="keyword">for</span> k <span class="keyword">in</span> <span class="built_in">range</span>(n):</span><br><span class="line"> <span class="keyword">for</span> m <span class="keyword">in</span> <span class="built_in">range</span>(n):</span><br><span class="line"> c[k] += (<span class="number">2</span> / n) * y[m] * np.cos(np.pi * k * (m + <span class="number">0.5</span>) / n)</span><br><span class="line"> <span class="built_in">print</span>(c)</span><br><span class="line"> y_array = np.zeros(<span class="built_in">len</span>(x_array))</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, <span class="built_in">len</span>(c)):</span><br><span class="line"> y_array += c[i] * np.cos(i * np.arccos(x_array))</span><br><span class="line"> y_array += <span class="number">1</span> / <span class="number">2</span> * c[<span class="number">0</span>]</span><br><span class="line"> <span class="keyword">return</span> y_array</span><br></pre></td></tr></table></figure><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="function">V3 <span class="title">GetPoCAPoint</span><span class="params">(V3 <span class="type">const</span>& p1, V3 <span class="type">const</span>& p2, V3 <span class="type">const</span>& p3, V3 <span class="type">const</span>& p4)</span> </span>{</span><br><span class="line"> V3 v_in = p2 - p1;</span><br><span class="line"> V3 v_out = p4 - p3;</span><br><span class="line"> V3 v_n = v_in.<span class="built_in">cross</span>(v_out);</span><br><span class="line"> v_n = v_n.<span class="built_in">normalize</span>();</span><br><span class="line"> <span class="type">double</span> d = (p3 - p2).<span class="built_in">dot</span>(v_n);</span><br><span class="line"> <span class="type">double</span> t_i = (v_out.x * (d * v_n.y + p<span class="number">2.</span>y - p<span class="number">3.</span>y) - v_out.y * (d * v_n.x + p<span class="number">2.</span>x - p<span class="number">3.</span>x)) / (v_out.x * v_in.y - v_in.x * v_out.y);</span><br><span class="line"> <span class="keyword">return</span> p2 - (t_i * v_in) + (<span class="number">0.5</span> * d * v_n);</span><br><span class="line">}</span><br></pre></td></tr></table></figure><figure class="highlight latex"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">\begin</span>{align*}</span><br><span class="line"> <span class="keyword">\partial</span><span class="built_in">_</span>i r</span><br><span class="line"> <span class="built_in">&</span>= <span class="keyword">\partial</span><span class="built_in">_</span>i <span class="keyword">\sqrt</span>{(x-x')<span class="built_in">^</span>2 + (y-y')<span class="built_in">^</span>2 + (z-z')<span class="built_in">^</span>2} <span class="keyword">\\</span></span><br><span class="line"> <span class="built_in">&</span>= <span class="keyword">\frac</span>{2(x-x')}{2<span class="keyword">\sqrt</span>{(x-x')<span class="built_in">^</span>2 + (y-y')<span class="built_in">^</span>2 + (z-z')<span class="built_in">^</span>2}} <span class="keyword">\\</span></span><br><span class="line"> <span class="built_in">&</span>= <span class="keyword">\frac</span>{x-x'}{r}</span><br><span class="line"><span class="keyword">\end</span>{align*}</span><br></pre></td></tr></table></figure><h3 id="表格测试"><strong>表格测试</strong></h3><table><thead><tr><th style="text-align:center"><strong>A1</strong></th><th style="text-align:center"><strong>A2</strong></th><th style="text-align:center"><strong>A3</strong></th><th style="text-align:center"><strong>A4</strong></th></tr></thead><tbody><tr><td style="text-align:center">B1</td><td style="text-align:center">B2</td><td style="text-align:center">B3</td><td style="text-align:center">B4</td></tr><tr><td style="text-align:center">C1</td><td style="text-align:center">C2</td><td style="text-align:center">C3</td><td style="text-align:center">C4</td></tr><tr><td style="text-align:center">D1</td><td style="text-align:center">D2</td><td style="text-align:center">D3</td><td style="text-align:center">D4</td></tr></tbody></table><h3 id="复选框测试"><strong>复选框测试</strong></h3><ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 🥰</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 😀</li></ul>]]></content>
<categories>
<category> 博客 </category>
</categories>
<tags>
<tag> 博客 </tag>
</tags>
</entry>
</search>