Obsidian-问题处理
1 问题描述
Obsidian 在以下场景遇到样式和同步问题:
- PDF 导出时字体不稳定,中文可能回退到宋体
- 代码块底色、行间距不符合预期
- 标题颜色需要自定义
- 需要在库外同步单个文件
- 更新双向链接
- 复制双向链接格式变化问题
2 解决方案
2.1 PDF 输出字体混乱
通过 CSS 代码片段强制指定打印字体。
核心步骤:
1. 在库目录下找到 .obsidian,手动新建 snippets 文件夹
2. 在 snippets 内新建 pdf-fix.css
3. 进入 设置 -> 外观 -> CSS 代码片段,刷新并打开开关
代码:
/* 专门针对打印/导出 PDF 的样式 */
@media print {
/* 作用于全文 */
body, .markdown-rendered, .markdown-preview-view {
/* 先指定西文,再指定中文,最后指定通用字体族 */
font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', 'Source Han Sans SC', sans-serif !important;
-webkit-font-smoothing: antialiased;
}
/* 解决标题字体不一致 */
h1, h2, h3, h4, h5, h6 {
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif !important;
font-weight: bold;
}
/* 解决代码块字体 */
code, pre {
font-family: 'JetBrains Mono', 'Source Code Pro', 'Sarasa Mono SC', monospace !important;
}
}
2.2 代码块底色与行间距控制
通过 CSS 变量和选择器精准控制。
代码:
/* --- 代码块底色 --- */
/* Live Preview (实时预览) */
.markdown-source-view.mod-cm6 .cm-content .HyperMD-codeblock,
.markdown-source-view.mod-cm6 .cm-content .cm-codeblock-bg {
background-color: #EEEEEE !important;
}
/* Reading Mode (阅读模式) */
.markdown-rendered pre,
.markdown-rendered pre > code {
background-color: #EEEEEE !important;
}
/* --- 正文行距与排版优化 --- */
:root {
--line-height-normal: 1.8 !important;
}
/* Reading Mode */
.markdown-rendered p,
.markdown-rendered li {
line-height: 1.8 !important;
margin-bottom: 1.2em !important;
}
/* Live Preview */
.markdown-source-view.mod-cm6 .cm-content {
line-height: 1.8 !important;
}
.markdown-source-view.mod-cm6 .cm-line {
padding-top: 0.15em !important;
padding-bottom: 0.15em !important;
}
/* 列表项优化 */
.markdown-rendered ol li,
.markdown-rendered ul li {
margin-bottom: 0.5em !important;
}
2.3 改变 H2 标题颜色
.markdown-rendered h2,
.cm-header-2,
.cm-heading-2 {
color: #389CF5 !important;
font-weight: bold;
}
2.4 非库文件同步(硬链接)
Windows(需管理员权限运行 cmd):
mklink /H "目标路径" "源路径"
# 示例
mklink /H "D:\Other\a.md" "D:\myLib\a.md"
macOS / Linux:
ln /Users/path/to/myLib/a.md /Users/path/to/Other/a.md
2.5 更新双向链接
不要直接在浏览器或其它文档工具更新文件名或者标题,否则连接文件会丢失
a.md
## 1 定义
b.md
[1 定义](#)
如果我改了 a.md
## 1 定义222
b.md 不会自动变
需要在 a.md 中,右击标题,选择"重命名当前小标题"
其它方法: - 全局搜索替换:ctrl+shift+f,全局搜索替换
2.6 复制双向链接格式变化问题
问题:
复制一个双向链接,为什么格式会变,比如“定期寿险”复制后,粘贴到其它地方,变成“人寿保险-定期寿险”
核心原因:
复制的是"渲染后的Markdown"
[...](#) 是 Obsidian 专有的Wiki 链接语法
[...](...) 是标准 Markdown 语法
解决:
无格式粘贴:Windows/Linux:按 Ctrl+Shift+V
3 注意事项
- 硬链接限制:两个文件必须在同一磁盘分区
- CSS 优先级:使用
!important确保覆盖主题样式 - 字体可用性:确保指定的字体已安装在系统中