跳转至

Obsidian-问题处理

1 问题描述

Obsidian 在以下场景遇到样式和同步问题:

  1. PDF 导出时字体不稳定,中文可能回退到宋体
  2. 代码块底色、行间距不符合预期
  3. 标题颜色需要自定义
  4. 需要在库外同步单个文件
  5. 更新双向链接
  6. 复制双向链接格式变化问题

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 确保覆盖主题样式
  • 字体可用性:确保指定的字体已安装在系统中

4 相关问题