<%= tocTitle %>
<% // 构建层级结构 var hierarchicalContent = []; var currentParent = null; content.forEach(function(item, index) { if (!item.excludeFromToc && !item.beforeToc) { // 检查是否是顶级章节(level 0 或没有 parentTitle) if (item.level === 0 || !item.parentTitle) { // 开始新的父章节 currentParent = { title: item.title, href: item.href, level: 0, number: item.number, children: [] }; hierarchicalContent.push(currentParent); } else if (item.level === 1 && currentParent) { // 添加到当前父章节的子项 currentParent.children.push({ title: item.title, href: item.href, level: 1, number: item.number }); } else { // 其他情况,作为独立章节 hierarchicalContent.push({ title: item.title, href: item.href, level: item.level || 0, number: item.number, children: [] }); } } }); // 渲染嵌套的列表项 function renderTocItem(chapter) { var title = chapter.title || 'Untitled'; var href = chapter.href; var children = chapter.children || []; var level = chapter.level || 0; var number = chapter.number; // 对于顶级章节(level 0),标题已经包含"第X章",不需要再加编号 // 只对子章节(level 1)添加编号 var displayTitle = (level === 1 && number ? number + ' ' : '') + title; var result = '
\n'; result += '
' + displayTitle; if (chapter.author && chapter.author.length) { result += ' -
' + chapter.author.join(",") + '
'; } if (chapter.url) { result += '
' + chapter.url + '
'; } result += '
\n'; // 如果有子章节,创建嵌套列表 if (children.length > 0) { result += '
\n'; children.forEach(function(child) { result += renderTocItem(child); }); result += '
\n'; } result += '
\n'; return result; } // 渲染所有目录项 hierarchicalContent.forEach(function(chapter) { %><%- renderTocItem(chapter) %><% }); %>