Cherry Markdown目录生成:TOC自动生成与导航

Cherry Markdown目录生成:TOC自动生成与导航

【免费下载链接】cherry-markdown ✨ A Markdown Editor 【免费下载链接】cherry-markdown 项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-markdown

还在为长文档的导航和结构展示而烦恼?Cherry Markdown的智能目录生成功能让你一键搞定文档结构可视化!

本文将深入解析Cherry Markdown的目录(TOC)生成功能,从基础使用到高级配置,帮助你掌握这个提升文档可读性的强大工具。

📋 目录功能概览

Cherry Markdown提供两种目录生成方式:

功能特性描述适用场景
自动目录生成通过[[toc]]语法自动提取文档标题技术文档、教程文章
悬浮目录导航侧边栏实时显示文档结构长文档阅读、快速导航
多级嵌套展示支持6级标题的层次化显示复杂结构文档
点击跳转支持目录项支持锚点跳转文档内部导航

🚀 快速开始:基础使用

最简单的目录生成

在Markdown文档中任意位置插入[[toc]]语法:

# 项目文档标题

[[toc]]

## 功能介绍
这里是功能描述...

## 安装指南
安装步骤说明...

## API参考
API详细信息...

效果展示

mermaid

⚙️ 高级配置选项

TOC语法配置

在Cherry初始化配置中,可以通过engine.syntax.toc进行详细配置:

const config = {
  engine: {
    syntax: {
      toc: {
        allowMultiToc: false,      // 是否允许多个TOC
        showAutoNumber: false,     // 是否显示自增序号
        tocStyle: 'nested',        // 目录样式:nested或plain
        tocNodeClass: 'toc-li',    // 目录项CSS类名
        tocContainerClass: 'toc',  // 目录容器CSS类名
        tocTitleClass: 'toc-title' // 目录标题CSS类名
      }
    }
  }
};

悬浮目录配置

const config = {
  toolbars: {
    toc: {
      updateLocationHash: true,    // 是否更新URL哈希
      defaultModel: 'full',        // 模式:full完整/pure精简
      position: 'absolute',        // 定位方式
      cssText: ''                  // 自定义CSS样式
    }
  }
};

🎨 目录样式定制

嵌套式 vs 平铺式目录

Cherry Markdown支持两种目录展示风格:

嵌套式目录(默认)

<div class="toc">
  <p class="toc-title">目录</p>
  <ul>
    <li class="toc-li">
      <a href="#section1" class="level-1">一级标题</a>
      <ul>
        <li class="toc-li">
          <a href="#section1-1" class="level-2">二级标题</a>
        </li>
      </ul>
    </li>
  </ul>
</div>

平铺式目录

<div class="toc">
  <p class="toc-title">目录</p>
  <ul>
    <li class="toc-li">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#section1" class="level-1">一级标题</a>
    </li>
    <li class="toc-li">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#section1-1" class="level-2">二级标题</a>
    </li>
  </ul>
</div>

自定义CSS样式

/* 修改目录容器样式 */
.toc {
  background: #f8f9fa;
  border-radius: 8px;
  padding: 16px;
  margin: 16px 0;
}

/* 修改目录标题样式 */
.toc-title {
  font-weight: bold;
  color: #2c3e50;
  margin-bottom: 12px;
  border-bottom: 2px solid #3498db;
  padding-bottom: 8px;
}

/* 修改目录项样式 */
.toc-li {
  margin: 4px 0;
  list-style: none;
}

.toc-li a {
  color: #34495e;
  text-decoration: none;
  transition: color 0.3s ease;
}

.toc-li a:hover {
  color: #e74c3c;
}

/* 不同级别标题的缩进 */
.toc-li.level-2 { padding-left: 20px; }
.toc-li.level-3 { padding-left: 40px; }
.toc-li.level-4 { padding-left: 60px; }
.toc-li.level-5 { padding-left: 80px; }
.toc-li.level-6 { padding-left: 100px; }

🔧 API接口使用

获取目录数据

通过JavaScript API获取目录信息:

// 获取Cherry实例
const cherry = new Cherry(config);

// 获取目录数据
const tocData = cherry.getToc();
console.log(tocData);

返回的目录数据结构示例:

[
  {
    level: 1,
    id: "section-1",
    text: "一级标题",
    children: [
      {
        level: 2,
        id: "section-1-1", 
        text: "二级标题",
        children: []
      }
    ]
  }
]

编程式插入目录

// 在光标位置插入TOC语法
cherry.toolbar.toolbarHandlers.insert('toc');

// 或者在指定位置插入
cherry.insert('[[toc]]\n\n');

🎯 实用技巧与最佳实践

1. 多文档目录管理

对于大型项目,可以使用多个TOC:

# 主目录
[[toc]]

## 模块一
[[toc::module1]]

### 功能A
### 功能B

## 模块二  
[[toc::module2]]

### 功能C
### 功能D

2. 排除特定标题

如果需要排除某些标题不出现在目录中:

// 自定义标题处理逻辑
config.engine.syntax.header = {
  anchorStyle: 'default',
  strict: false,
  // 自定义标题ID生成规则
  idGenerator: (text, level) => {
    if (text.includes('[no-toc]')) {
      return null; // 不生成ID,排除在目录外
    }
    return text.toLowerCase().replace(/[^\w]+/g, '-');
  }
};

3. 目录性能优化

对于超长文档,建议:

config.engine.syntax.toc = {
  maxDepth: 4, // 限制目录深度
  minDepth: 2   // 设置最小深度
};

🔍 常见问题解答

Q: 目录不显示怎么办?

A: 检查以下几点:

  • 确保文档中包含标题(# 语法)
  • 确认TOC语法正确:[[toc]][toc]
  • 检查是否有JavaScript错误

Q: 如何自定义目录标题?

A: 修改配置中的tocTitleClass或通过CSS覆盖:

.toc-title:before {
  content: "📑 本文目录";
  display: block;
  font-size: 1.2em;
  font-weight: bold;
}

Q: 支持多语言吗?

A: 是的,通过locale配置:

config.locale = 'en_US'; // 英文目录标题
// 或者自定义
config.engine.syntax.toc.tocTitle = 'Table of Contents';

📊 功能对比表

特性Cherry Markdown其他编辑器优势
自动生成⚠️ 部分支持完全自动化
实时更新编辑时实时刷新
多级嵌套⚠️ 有限支持完整6级支持
样式定制⚠️ 有限定制完全可定制
API支持完整编程接口

🚀 进阶应用场景

场景一:技术文档系统

// 集成到文档系统
function generateDocumentationToc(content) {
  const cherryEngine = new CherryEngine();
  const html = cherryEngine.makeHtml(content);
  const toc = cherryEngine.getToc();
  
  return {
    content: html,
    navigation: buildNavigationMenu(toc)
  };
}

场景二:电子书阅读器

// 电子书目录生成
function generateEbookToc(chapters) {
  let markdown = '';
  chapters.forEach((chapter, index) => {
    markdown += `# ${chapter.title}\n\n`;
    markdown += chapter.content + '\n\n';
  });
  
  markdown = `[[toc]]\n\n${markdown}`;
  return markdown;
}

场景三:API文档自动化

// 自动生成API文档目录
function generateApiToc(apiEndpoints) {
  let tocMarkdown = '# API 参考\n\n[[toc]]\n\n';
  
  apiEndpoints.forEach(endpoint => {
    tocMarkdown += `## ${endpoint.method} ${endpoint.path}\n\n`;
    tocMarkdown += `**描述:** ${endpoint.description}\n\n`;
    tocMarkdown += '### 参数\n\n';
    // 更多内容...
  });
  
  return tocMarkdown;
}

💡 性能优化建议

  1. 延迟加载: 对于超长文档,可以考虑延迟生成目录
  2. 缓存机制: 对静态内容启用目录缓存
  3. 虚拟滚动: 超长目录使用虚拟滚动技术
  4. 按需生成: 只在需要时生成目录
// 性能优化示例
let tocCache = null;

function getOptimizedToc() {
  if (!tocCache) {
    tocCache = cherry.getToc();
  }
  return tocCache;
}

// 监听内容变化清除缓存
cherry.event.afterChange(() => {
  tocCache = null;
});

🎉 总结

Cherry Markdown的目录生成功能提供了:

  • 🤖 自动化: 一键生成,无需手动维护
  • 🎨 可定制: 完全可控的样式和行为
  • 🔧 易集成: 丰富的API接口
  • ⚡ 高性能: 优化的渲染机制

无论你是编写技术文档、创作电子书,还是构建知识管理系统,Cherry Markdown的TOC功能都能显著提升文档的可读性和导航体验。

💡 提示: 记得在实际项目中使用前进行充分的测试,确保目录功能符合你的具体需求。


下一步行动建议:

  1. ✅ 在现有项目中尝试[[toc]]语法
  2. ✅ 根据品牌风格定制目录样式
  3. ✅ 探索API接口实现动态目录
  4. ✅ 分享你的使用经验和技巧

开始使用Cherry Markdown的目录功能,让你的文档更加专业和易用! 🚀

【免费下载链接】cherry-markdown ✨ A Markdown Editor 【免费下载链接】cherry-markdown 项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-markdown

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值