% ============================================================
%  《空间生态位与细胞通讯重编程》PDF 排版模板（pandoc header-includes，单文件）
%
%  用法（生成 PDF 的完整命令，含封面与目录）：
%    pandoc book.md -o build/build.tex \
%      -V documentclass=ctexbook -V classoption="11pt,openany" \
%      -V colorlinks=true --toc --toc-depth=2 \
%      -H preamble.tex --syntax-highlighting=tango --metadata lang=zh-CN
%    （在项目根目录执行；book.md 的图片路径为相对路径 figures/xxx.png）
%    xelatex -interaction=nonstopmode build/build.tex   （跑两遍生成目录页码）
%    xelatex -interaction=nonstopmode build/build.tex
%    最后把 build/build.pdf 重命名为正式文件名。
%
%  说明：
%    - 章标题自带编号（如"第 08 章 预处理与质控"），故禁用 ctex 自动编号；
%    - 正文标题使用黑体，正文宋体，代码 Consolas；
%    - 封面经 \AtBeginDocument 注入，并禁用 frontmatter/mainmatter 翻页。
% ============================================================

% ---------- 页面设置 ----------
\usepackage{geometry}
\geometry{a4paper, top=2.6cm, bottom=2.6cm, left=2.9cm, right=2.4cm}

% ---------- 颜色 ----------
\usepackage{xcolor}
\definecolor{codebg}{HTML}{F6F8FA}      % 代码块背景
\definecolor{codeframe}{HTML}{D0D7DE}   % 代码块边框
\definecolor{linkblue}{HTML}{0A5AA8}    % 链接颜色
\definecolor{rulecolor}{HTML}{404040}   % 分隔线

% ---------- 行距 ----------
\usepackage{setspace}
\setstretch{1.32}

% ---------- 等宽字体（代码字体：Consolas + 中文字体兜底） ----------
\setmonofont{Consolas}[Scale=0.92, Ligatures=TeX]
\setCJKmonofont{Microsoft YaHei}[Scale=0.88]
% ---------- 特殊符号回退 ----------
% 希腊字母（β γ μ）、数学符号（≠ ≥ ≈ ∝）、带圈数字（①-⑥）、箭头（→）等
% 默认被 xeCJK 归为拉丁类（走 Latin Modern，缺字形），改声明为 CJK 类，
% 由中文字体（宋体 SimSun，覆盖全部所需字形）排版。
\xeCJKDeclareCharClass{CJK}{"03B1 -> "03C9}   % 希腊小写
\xeCJKDeclareCharClass{CJK}{"2190 -> "21FF}   % 箭头
\xeCJKDeclareCharClass{CJK}{"2200 -> "22FF}   % 数学运算符（≠ ≥ ≈ ∝ …）
\xeCJKDeclareCharClass{CJK}{"2460 -> "24FF}   % 带圈/括号数字

% ---------- 代码块样式（fancyvrb + tango 高亮） ----------
\usepackage{fancyvrb}
\fvset{
  frame=single,
  framerule=0.5pt,
  rulecolor=\color{codeframe},
  fillcolor=\color{codebg},
  framesep=6pt,
  xleftmargin=8pt,
  xrightmargin=6pt,
  fontsize=\footnotesize,   % 9pt：兼顾长代码行与可读性
  samepage=false
}

% ---------- 页眉页脚 ----------
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE]{\small\songti\leftmark}
\fancyhead[RO]{\small\songti\rightmark}
\fancyfoot[C]{\small\thepage}
\renewcommand{\headrulewidth}{0.5pt}
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyfoot[C]{\small\thepage}%
  \renewcommand{\headrulewidth}{0pt}%
}

% ---------- 章节标题（黑体；章标题自带"第 00 章"编号，禁用自动编号） ----------
\ctexset{
  chapter = {
    format = {\centering\Huge\bfseries\heiti},
    name = {},
    number = \relax,
    beforeskip = 2.5em,
    afterskip = 1.8em,
  },
  section = {
    format = {\Large\bfseries\heiti},
    beforeskip = 1.4em,
    afterskip = 0.7em,
  },
  subsection = {
    format = {\large\bfseries\heiti},
    beforeskip = 1.1em,
    afterskip = 0.5em,
  },
}

% ---------- 图注与表格 ----------
\usepackage{caption}
\captionsetup{font=small, labelfont={bf, heiti}, skip=6pt}

% ---------- 超链接 ----------
\usepackage{hyperref}
\hypersetup{
  colorlinks=true,
  linkcolor=linkblue,
  urlcolor=linkblue,
  citecolor=linkblue,
  bookmarksnumbered=true,
  pdftitle={空间生态位与细胞通讯重编程——肿瘤微环境空间转录组分析实战教程},
  pdfsubject={空间转录组、生态位识别、细胞通讯分析},
}

% ---------- 封面（在 \begin{document} 后最先输出，单页垂直居中） ----------
\let\frontmatter\relax
\let\mainmatter\relax
\AtBeginDocument{%
\thispagestyle{empty}%
\vspace*{\fill}%
\begin{center}
{\small\songti 生物信息学系列教程\par}
\vspace{0.6cm}
{\color{rulecolor}\rule{0.85\textwidth}{0.9pt}\par}
\vspace{1.6cm}
{\Huge\bfseries\heiti 空间生态位与细胞通讯重编程\par}
\vspace{0.5cm}
{\LARGE\songti 肿瘤微环境空间转录组分析实战教程\par}
\vspace{1.4cm}
{\large\songti Spatial Niche \& Communication Reprogramming\par}
{\large\songti in the Tumor Microenvironment\par}
\vspace{1.6cm}
{\normalsize\songti 10x Visium · 生态位识别 · 细胞通讯 · 新手实战\par}
\vspace{2.0cm}
{\color{rulecolor}\rule{0.85\textwidth}{0.9pt}\par}
\vspace{0.7cm}
{\large\songti 第 1 版\quad 2026 年\par}
\end{center}
\vspace*{\fill}%
\clearpage
}
