OrCAD与PADS数据交互实战:原理图到PCB的无缝协同设计指南
1. 项目概述跨越工具的PCB设计协同在电子硬件开发领域一个常见的场景是原理图设计团队习惯使用Cadence的OrCAD Capture CIS进行前端设计而PCB布局布线团队则可能更擅长使用Mentor Graphics现为Siemens EDA的PADS系列工具。这种工具链的割裂在中小型公司或项目协作中尤为常见。我最近完成的一个项目恰好就卡在了OrCAD 17.2和PADS VX.2.7这两个版本的数据交互上。网上资料要么过于陈旧要么语焉不详踩了几个坑之后我决定把从原理图到PCB的完整数据流转路径以及其中的关键配置和避坑要点系统地梳理出来。这不仅仅是一个简单的“导出-导入”教程。它涉及到两个不同EDA生态之间的“语言翻译”核心在于确保网络连接关系、元件属性、封装信息在转换过程中100%准确无误。任何一个环节的疏漏都可能导致PCB上出现严重的电气错误比如网络丢失、元件错位后期返工成本极高。本教程旨在为面临同样工具链协同问题的工程师提供一份可直接“抄作业”的、经过实战验证的配置与操作指南确保设计数据无缝、可靠地从OrCAD流向PADS。2. 核心工作流程与工具选型解析2.1 为何是OrCADPADS组合在开始具体操作前有必要先理解这个组合的典型应用背景。OrCAD Capture CIS以其强大的原理图编辑、元件库管理和仿真前端接口著称特别适合进行复杂的模拟/数字混合电路设计。而PADS Professional含PADS Layout/Router则在PCB布局布线尤其是高速、高密度板卡设计方面以其相对友好的学习曲线和高效的交互操作受到许多工程师的青睐。然而Cadence和MentorSiemens是两家公司它们的原生数据格式并不直接兼容。你不能直接把OrCAD的.DSN文件在PADS里打开。因此整个流程的核心是找到一个可靠的、支持这两个特定版本的“中间桥梁”。这个桥梁就是网表和封装库的准确映射。2.2 标准数据流转路径一个稳健的OrCAD to PADS工作流通常遵循以下路径我称之为“双保险”流程OrCAD端完成原理图设计 - 进行DRC设计规则检查 - 生成特定格式的网表。中间环节处理网表确保PADS能正确识别。PADS端创建新PCB文件 - 导入网表 - 同步元件和网络 - 进行布局布线。这里最关键的、也是最容易出错的就是第1步和第2步。OrCAD生成的网表有多种格式如Telesis, PCBNavigator, PADS等我们需要选择PADS能完美识别的格式并确保原理图中的每一个元件属性都设置正确。2.3 工具链确认版本兼容性是第一道坎我使用的版本是OrCAD Capture CIS 17.2和PADS VX.2.7。这是一个经过验证可以稳定工作的组合。但你必须注意OrCAD 17.2 请确保已安装“Cadence SPB OrCAD Products”组件并包含“OrCAD Capture CIS”和“OrCAD Capture CIS – PSpice”功能。我们主要使用前者。PADS VX.2.7 标准安装即可主要使用“PADS Layout”模块。注意不同的小版本号如17.2-2016 vs 17.2-2022有时在细节上会有差异。如果遇到问题首先应怀疑版本兼容性。本教程的方法在所述版本上通过其他版本请谨慎参考。3. OrCAD Capture CIS端原理图输出前的精细打磨在OrCAD中按下导出按钮之前90%的准备工作决定了导入PADS的成功率。这一步的核心是“元件属性”的规范化。3.1 元件库与封装属性的关键设置OrCAD中的元件有两个属性与PCB导入息息相关PCB Footprint和Part Reference。PCB Footprint属性这是最重要的属性它直接告诉PADS这个原理图符号对应哪个PCB封装。这个名称必须与PADS自带的封装库或你自建的PADS封装库中的封装名严格一致。操作双击原理图中的元件打开属性编辑器。找到PCB Footprint一栏填入准确的封装名例如0805C贴片电阻电容、SOT-23-5、DIP-8等。常见坑点很多人习惯用类似R0805这样的名称但在PADS库中封装名可能就叫0805。这种不匹配会导致导入PADS时找不到封装元件丢失。Part Reference属性即位号如R1,C2,U3。OrCAD和PADS都需要通过它来唯一标识元件。确保你的原理图位号已经正确编号通过Tools - Annotate功能没有重复。3.2 生成PADS兼容网表的黄金步骤这是整个流程的技术核心。OrCAD需要通过一个中间文件PADS.ini来配置如何生成PADS能读懂的网表。准备工作首先在OrCAD中打开你的设计项目.DSN文件并确保所有图纸的PCB Footprint属性都已填写无误。调用网表生成工具在Capture CIS界面选中你的设计根节点.DSN文件然后点击菜单Tools - Create Netlist...。关键配置窗口在弹出的“Create Netlist”对话框中切换到PADS PCB标签页。这是专门为PADS设计的输出格式。你会看到一个Formatters的路径通常指向类似.../tools/capture/pads.ini的文件。这个pads.ini文件就是翻译词典。绝对不要直接点OK先点击右下角的Setup...按钮。pads.ini文件配置详解 点击Setup...后会打开一个文本配置窗口。你需要关注并修改以下几个关键部分这是我踩过多次坑总结出来的[PADS-LAYER-MAPPING] 这部分映射逻辑层。通常默认即可除非你有特殊层结构。[PADS-NET-ATTRIBUTES] 定义网络属性映射。默认设置一般够用。最关键的[PADS-PACKAGE-MAPPING] 这里定义了OrCAD的PCB Footprint属性值如何映射到PADS的封装名。理想情况下你应该让OrCAD的封装名和PADS的封装名完全相同这样就不需要在此处添加映射行。如果你的命名不一致才需要在这里添加映射例如RES-08050805C表示OrCAD中PCB Footprint为RES-0805的元件在网表中被替换为0805C再传递给PADS。[PADS-SWITCHES] 这里有一些重要开关。ROUTE-PORTSYES 建议设为YES将端口Port也作为连接点。INCLUDE-UNNAMEDNO 设为NO排除未命名的网络。POWER-NAMES-NUMERICNO 保持NO电源网络名称保持原样。生成网表配置好pads.ini后点击OK返回再点击OK生成网表。OrCAD会生成一个扩展名为.asc的文本文件。请务必用文本编辑器如Notepad打开这个.asc文件检查一下检查要点搜索“PART”部分确认每个元件的封装名在PCBFILE之后是否正确搜索“NET”部分看看网络连接是否完整。实操心得我强烈建议在团队内建立统一的封装命名规范让OrCAD和PADS使用相同的封装名。这样可以完全避免复杂的映射配置减少出错概率。每次生成网表后花2分钟快速浏览生成的.asc文件能提前发现大部分属性错误。4. PADS Layout端网表导入与设计同步拿到“干净”的网表文件.asc后我们进入PADS Layout环节。4.1 新建PCB文件与基础设置打开PADS Layout创建一个新的PCB文件File - New。首先进行层设置Setup - Layer Definition。根据你的板子复杂度定义好电气层如Top, Bottom, GND, Power等和非电气层Silkscreen, Paste Mask等。设置设计规则Setup - Design Rules。至少设置默认的安全间距Clearance、布线宽度Trace Width和布线规则Routing。这一步可以在导入网表前后做但提前设置好规则是个好习惯。4.2 导入网表见证连接关系的诞生这是将OrCAD逻辑世界“注入”PADS物理世界的关键一步。在PADS Layout中点击菜单File - Import...。在文件类型中选择ASCII Files (*.asc)然后找到并选中你从OrCAD生成的那个.asc网表文件。点击“打开”。PADS会弹出一个“Import Netlist”对话框。关键选项配置PCB: 浏览到你当前打开的或新建的PCB文件。Ignore warnings:初次导入时建议不要勾选。让PADS报告所有警告和错误便于排查。ECO Options: 保持默认即可。点击“OK”开始导入。4.3 解读与处理导入报告导入完成后PADS会弹出一个日志窗口。你必须仔细阅读这个报告Successfully imported: 这是最理想的情况所有元件和网络都正确导入。Warnings: 常见警告有“Part type not found”但系统使用了替代封装。你需要确认这个替代封装是否合适。Errors: 这是必须解决的。最常见的错误是Cannot find part type item: PADS在它的库路径中找不到网表里指定的封装。这是最高频的错误。Invalid pin number: 原理图符号的引脚编号与PCB封装的焊盘编号不匹配。如果报告有错误导入过程不会完全成功PCB文件中会缺失部分元件或网络。4.4 封装库路径管理与元件匹配当出现“Cannot find part type”错误时你需要引导PADS找到正确的封装库。PADS库文件类型 PADS的封装库是.pt9Part Type文件它包含了元件的逻辑信息引脚、门和物理封装.d文件即Decal的关联。添加库路径 在PADS Layout中点击菜单File - Library...打开库管理器。点击“Manage Lib List”按钮。在这里你可以添加Add包含所需封装.pt9文件的库目录。确保你的自定义封装库或PADS系统库路径已被添加。创建缺失的封装 如果封装确实不存在你需要先在PADS自带的“Decal Editor”或“PCB Librarian”中绘制并保存封装然后创建一个对应的Part Type将其与封装关联并保存到库中。这是一个独立且重要的技能需要熟练掌握。重新导入 解决所有库问题后重新执行File - Import操作。这次PADS应该能找到所有封装了。成功导入后所有元件会以“簇”的形式出现在PADS Layout的原点附近。你可以使用CtrlA全选然后右键Disperse将它们打散开始布局工作。5. 协同设计中的高级技巧与问题深度排查即使网表成功导入在后续的布局布线过程中原理图与PCB的同步依然可能出问题。以下是几个进阶的实战经验。5.1 设计变更同步ECO模式的使用原理图修改后如何更新到PCB你不能简单地重新导入网表那会覆盖你的布局布线成果。正确的方法是使用ECOEngineering Change Order模式。在OrCAD中修改原理图后使用完全相同的配置特别是pads.ini设置重新生成网表.asc文件。建议使用一个新的文件名如design_rev2.asc以示区别。在PADS Layout中首先确保当前设计没有错误。点击工具栏上的ECO按钮通常是一个铅笔图标进入工程变更模式。此时PADS界面会有变化底部状态栏显示“ECO Mode”。然后点击File - Import...选择新生成的网表文件。在导入对话框中PADS会自动识别到是ECO更新它会比较新旧网表并生成一个变更列表通常是添加、删除、修改元件和网络。仔细审查变更列表确认无误后应用。PADS会自动在现有PCB上添加新元件、删除旧元件、更新网络连接并最大程度地保留你已有的布局和布线。注意事项在进行重大ECO更新前务必先备份当前的PCB文件。虽然ECO通常很可靠但对于复杂的变更如大规模元件替换有时仍可能产生意想不到的冲突。5.2 封装不匹配的终极解决方案除了库路径问题更深层次的封装不匹配源于原理图符号与PCB封装的引脚映射错误。例如一个三极管的原理图符号引脚是1(Base), 2(Collector), 3(Emitter)但PCB封装焊盘编号可能是1(E), 2(B), 3(C)。这种不匹配在导入时可能不会报错但会导致PCB上电气连接完全错误。排查方法在PADS Layout中右键点击有疑问的元件选择Show - Part Information。在弹出的窗口中查看“Pins”标签页。这里列出了Part Type中定义的逻辑引脚编号和名称。同时在库管理器中打开该元件的封装Decal查看焊盘的编号。对比两者是否一致。如果不一致必须在PADS的库中修改Part Type的引脚映射关系或者返回OrCAD修改原理图符号的引脚编号使其与PCB封装匹配。这是一个根源性的库管理问题必须在设计前期规范。5.3 网络表比对确保万无一失在导入PADS后如何100%确认所有连接关系都正确转移了一个可靠的方法是进行网络表比对。从PADS Layout中导出网表File - Export...选择保存为.asc格式PADS格式。使用文本比较工具如Beyond Compare, WinMerge对比从OrCAD导出的原始.asc文件和从PADS导出的.asc文件。重点比较元件列表*PART*部分的数量和封装名是否一致。网络列表*NET*部分的数量、网络名以及每个网络下的连接点元件位号引脚号是否完全一致。任何差异都指向了数据转换或库定义的问题。这个方法虽然有点“笨”但它是验证数据完整性的黄金标准。6. 常见错误速查与实战排坑记录下面我将遇到过的典型问题、现象和解决方案整理成表方便你快速定位。问题现象 (PADS导入时报错/警告)可能原因排查步骤与解决方案ERROR: Cannot find part type [CAP-0805]1. PADS库路径未包含该封装库。2. 库中确实没有名为CAP-0805的Part Type。1. 在File - Library - Manage Lib List中添加正确库路径。2. 在库管理器中搜索CAP-0805确认是否存在。若不存在需创建。WARNING: Part type not found. Using default.PADS找不到指定封装使用了库中某个默认封装通常是DUMMY。必须处理检查OrCAD中该元件的PCB Footprint属性名确保与PADS库中完全一致大小写敏感。检查pads.ini中的映射规则。导入后元件位号全是U?,R?OrCAD原理图没有进行物理标注Annotate。返回OrCAD使用Tools - Annotate功能对所有元件进行重新编号。导入后元件堆叠在原点无法移动元件被组合在了一起。全选所有元件CtrlA然后右键点击选择Disperse分散或使用快捷键CtrlD。PCB上网络飞线缺失或错误1. 原理图网络名含有PADS非法字符如/,\,:。2. 引脚映射错误见5.2节。1. 在OrCAD中修改网络名避免使用特殊字符用下划线_代替。2. 仔细检查问题元件在OrCAD符号和PADS封装中的引脚映射关系。执行ECO更新后已布好的线被删除网络名在原理图中被更改ECO将其视为删除旧网络、添加新网络。对于重要的网络如电源、时钟尽量保持网络名稳定。如果必须改可在ECO后手动重新连接或使用PADS的“Reuse”功能尝试复用。生成的.asc网表文件是空的或很小OrCAD生成网表时配置错误或原理图有致命错误。检查OrCAD的DRC报告。确认在Create Netlist时正确选择了PADS PCB标签页并配置了pads.ini。用文本编辑器打开网表文件查看内容。7. 从原理图到PCB的完整检查清单在每次进行关键数据传递如首次导入、重大ECO前按照此清单核对可以规避绝大多数问题OrCAD端检查 (Pre-Flight Check)[ ] 所有元件PCB Footprint属性已填写且名称与PADS库中完全一致。[ ] 执行Tools - Design Rules Check清除所有DRC错误特别是未连接的网络、重复的位号。[ ] 使用Tools - Annotate进行物理标注确保位号唯一R1, C2, U3...。[ ] 网络命名简洁避免使用/,\,:,*等特殊字符。[ ] 确认pads.ini配置文件中的封装映射规则如果需要并保存。[ ] 生成网表.asc文件后用文本编辑器打开快速浏览*PART*和*NET*部分是否有明显异常。PADS端准备 (Landing Preparation)[ ] 确认PADS的库路径Manage Lib List已包含所有必需的封装库.pt9文件所在目录。[ ] 对于关键或自定义元件在PADS库管理器中预先搜索确认其Part Type存在。[ ] 备份当前工作的PCB文件如果是ECO更新。导入后验证 (Post-Import Verification)[ ] 仔细阅读PADS的网表导入报告处理所有错误审查所有警告。[ ] 检查导入的元件数量是否与原理图一致。[ ] 使用CtrlAltN打开网络表浏览器抽查几个关键网络电源、地、时钟确认连接关系正确。[ ] 对怀疑的元件右键查看Part Information核对引脚定义。这套流程和检查清单是我在多个跨工具链项目中总结出的“生存指南”。它不能保证完全不出错但能系统性地将风险降到最低。工具只是手段确保设计意图准确无误地在不同环节间传递才是工程师价值的体现。最后一个小建议在团队内部建立并维护一份统一的《封装命名规范》和《原理图-PCB数据交互流程》文档其长期价值远大于解决一两个临时性的导入错误。

相关新闻

Activin A与癌症恶病质:血管内皮损伤作为肌肉萎缩的新视角

Activin A与癌症恶病质:血管内皮损伤作为肌肉萎缩的新视角

本文围绕Activin A在癌症恶病质发生发展中的核心作用,系统阐述该细胞因子通过抑制血管内皮细胞中PGC1α表达、诱导内皮功能障碍进而驱动骨骼肌萎缩的分子机制。一、癌症恶病质的病理特征与研究困境。癌症恶病质是一种以非自愿性体重下降、骨骼肌萎缩和脂肪消耗为特征…

2026/10/19 17:04:50 阅读更多 →
typed-scss-modules vs typed-css-modules:哪款CSS Modules类型生成工具更适合你的项目?

typed-scss-modules vs typed-css-modules:哪款CSS Modules类型生成工具更适合你的项目?

typed-scss-modules vs typed-css-modules:哪款CSS Modules类型生成工具更适合你的项目? 【免费下载链接】typed-scss-modules 🎁 Generate type definitions (.d.ts) for CSS Modules using SCSS 项目地址: https://gitcode.com/gh_mirror…

2026/10/19 17:41:44 阅读更多 →
多尺度注意力机制在红外与可见光图像融合中的应用与实践

多尺度注意力机制在红外与可见光图像融合中的应用与实践

1. 项目缘起:为什么我们需要融合红外与可见光图像? 在计算机视觉和图像处理领域,红外与可见光图像融合一直是个既经典又充满挑战的课题。我自己在安防监控和自动驾驶相关的项目里,没少跟这两种图像打交道。简单来说,可…

2026/10/19 17:41:46 阅读更多 →

最新新闻

基于语义向量的名著推荐系统:从协同过滤到Django工程实践

基于语义向量的名著推荐系统:从协同过滤到Django工程实践

1. 为什么经典名著做推荐,比想象中难得多我做在线阅读平台的项目已经有几年了,从资讯流到工具类产品都碰过,但真正让我觉得"推荐系统不是套个协同过滤就能完事"的,恰恰是这个古典名著推荐项目。以前做过的商品推荐、视频…

2026/10/20 17:55:50 阅读更多 →
WorkBuddy链接微信实战:用Webhook将消息流改造成自动化工作流

WorkBuddy链接微信实战:用Webhook将消息流改造成自动化工作流

这个系列写到第七篇,前面几篇已经把 WorkBuddy 的安装部署、任务编排、数据看板这些底层能力聊了不少。但说实话,后台私信里问得最多的,反而是“我的微信能不能接进去”。这其实不奇怪——大部分人日常最高频的信息入口就是微信,工…

2026/10/20 17:55:50 阅读更多 →
小熊派nano环境搭建实战:交叉编译与固件烧录全流程

小熊派nano环境搭建实战:交叉编译与固件烧录全流程

第一次拿到小熊派nano这块板子,很多人的第一反应是先找个教程点个灯。但真走到“点灯”这一步,中间隔着的不是一根杜邦线,而是一整条工具链:电脑上得装对应的交叉编译器,得把官方源码仓库完整克隆到本地,还…

2026/10/20 17:55:49 阅读更多 →
无ESDF的无人机局部规划器EGO-Planner:B样条轨迹优化解析

无ESDF的无人机局部规划器EGO-Planner:B样条轨迹优化解析

1. 这篇论文到底解决了什么问题1.1 传统ESDF为什么会让局部规划器“变重”ESDF是Euclidean Signed Distance Field的缩写,每个体素里存的是它到最近障碍物表面的有符号距离。对于轨迹优化来说,这个东西太好用了:只要查询某个空间点&#xff0…

2026/10/20 17:55:49 阅读更多 →
AI数据安全实战:从投毒、注入到泄露的防御与排查

AI数据安全实战:从投毒、注入到泄露的防御与排查

聊AI人工智能领域的数据安全,很多人的第一反应是权限、加密、备份。但在真实的大模型项目里,这些传统手段往往只是基础,数据泄露真正让人头疼的地方在于:数据一旦进入模型,就很难被"删掉"。模型会记住某些训…

2026/10/20 17:55:49 阅读更多 →
大模型入门必读:从深度学习原理到工程实战的系统书单

大模型入门必读:从深度学习原理到工程实战的系统书单

最近这半年,总有人在后台问我:“我想入门大模型,该看什么书?”老实说,每次被问到这个问题,我都挺为难的。现在网上关于大模型的书单五花八门,有讲算法的、有讲应用的、有讲产业趋势的&#xff0…

2026/10/20 17:54:48 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →