需用latex定义outerstory与innerstory环境实现故事嵌套,perl脚本处理层级识别与自动标记,tcolorbox美化内层故事,hyperref支持跳转,build_nav.pl生成导航树。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

设计故事中套故事的叙事结构,需要明确内层故事如何被外层故事触发、转述或解构,避免嵌套失序导致读者迷失。Laper不是标准工具名,此处按“LaTeX + Perl脚本辅助写作”的混合工作流理解,即用LaTeX组织多层级文档结构,用Perl脚本自动处理嵌套标记、交叉引用与章节展开逻辑。
用LaTeX定义嵌套故事容器
第一步:在主文档(main.tex)中声明两个自定义环境——outerstory 和 innerstory,分别对应框架故事与嵌入故事。
第二步:在导言区添加如下代码:
ewenvironment{outerstory}{section*{【框架故事】}itshape}{par}
ewenvironment{innerstory}{subsection*{【嵌入故事】}small
ormalfont}{par}
第三步:确保每个innerstory必须严格位于某个outerstory环境内部,LaTeX编译时不会报错,但若跨环境使用,交叉引用将失效且页码跳转错乱。【外层环境未闭合就开启内层环境,会导致后续所有章节编号崩坏】
用Perl脚本自动注入嵌套标识符
方法一:用Perl读取文本段落前缀识别嵌套层级
写一个perl脚本(inject_nest.pl),逐行扫描源文本,遇到以“>”开头的行视为内层故事起始,自动包裹egin{innerstory};遇到空行后接“##”则视为外层故事分隔,插入end{outerstory}egin{outerstory}。
方法二:用正则批量重写带缩进的Markdown式源稿
把原始稿保存为story.md,其中用4空格缩进表示一层嵌套,8空格表示二层嵌套。Perl脚本用s/^ {4}(.+)/\begin{innerstory}$1\end{innerstory}/g匹配并替换,注意要先处理深层再处理浅层,否则会重复包裹。
控制嵌套故事的视觉区分与导航
第一步:为innerstory环境添加边框与背景色,在导言区加入:usepackage{tcolorbox}
ewtcolorbox{innerstorybox}{colback=gray!3,colframe=blue!35!black,arc=0mm,boxrule=0.3mm}
然后重定义innerstory环境体为egin{innerstorybox}...end{innerstorybox}。
第二步:启用hyperref宏包,对每个outerstory加label{outer- hepage},每个innerstory加label{inner- hepage-rabic{section}},确保PDF点击可跳转。
第三步:运行perl build_nav.pl生成nav_index.tex,该文件含自动整理的嵌套路径树,例如:
OuterStory-001 → InnerStory-001a → InnerStory-001a-α
这个文件被input{nav_index}引入封面后第一页。











