% !TeX program = lualatex
\documentclass[redline, titleindent, zhlineskip]{gbt9704}
\usepackage{hyperref}

% 启用章节编号（GB/T 9704-2012 层次序数）
\setcounter{secnumdepth}{3}
\renewcommand{\thesection}{\chinese{section}、}           % 一、二、三、
\renewcommand{\thesubsection}{（\chinese{subsection}）}   % （一）（二）（三）
\renewcommand{\thesubsubsection}{\arabic{subsubsection}.} % 1. 2. 3.

\title{\texttt{gbt9704} 宏包使用说明 \\ (v0.1.4)}
\author{Wupei Song \\ \small{\url{songwupei@163.com}}}
\date{2026年7月29日}

\begin{document}

\maketitle

\tableofcontents

\section{概述}
本宏包 \texttt{gbt9704} 基于 \texttt{memoir} 文档类，严格遵循 \textbf{GB/T 9704-2012}《党政机关公文格式》标准，实现了红头文件、标题分级、附件、版记等公文的自动化排版。

当前版本为 \textbf{v0.1.4}，支持 LuaLaTeX（推荐，彩色 Emoji）和 XeLaTeX（字体回退）双引擎编译。

\section{编译方式}
本宏包依赖 \texttt{ctex} 宏包处理中文，推荐使用 \textbf{LuaLaTeX} 引擎编译（彩色 Emoji 等特性需要 LuaLaTeX + HarfBuzz 支持）：
\begin{verbatim}
lualatex gbt9704-doc.tex
\end{verbatim}

\section{宏包选项}
\begin{description}
  \item[redline] 在公文红头下方绘制红色分隔线。
  \item[noredline] 不绘制红色分隔线（默认）。
  \item[titleindent] 章节标题首行缩进2字符（默认，符合国标）。
  \item[notitleindent] 章节标题取消首行缩进。
  \item[zhlineskip] 启用 \texttt{zhlineskip} 宏包，提供 CJK 感知的比例行距控制（正文 1.75 倍字号、脚注独立比例、数学恢复西文行距）。需 TeX Live 2026 或手动安装。
  \item[emoji] 启用 Emoji 支持（默认）。LuaLaTeX 下输出 PDF 彩色矢量图形，XeLaTeX 下回退至系统 Emoji 字体黑白渲染。
  \item[noemoji] 禁用 Emoji 支持。
\end{description}

\section{核心命令示例}

\subsection{标题与正文}
使用 \verb|\title{...}| 和 \verb|\maketitle| 输出大标题（二号大标宋，居中）：
\verb|\gongwensubtitle{...}| 可输出副标题（三号仿宋，居中）。

正文环境自动设置为三号仿宋、28磅行距、首行缩进2字符。

\subsection{附件处理}
单附件使用 \verb|\attachmentHZ{文件名}|（自动带"附件："前缀）：
\attachmentHZ{2026年度工作计划表}

如需不带前缀，使用 \verb|\attachmentNOHZ{...}|。

多附件使用 \verb|\attachmentHZ| 列出首项，后续项用 \verb|\attachmentitem| 自然衔接：
\attachmentHZ{1.财务报表附件}
\attachmentitem{2.人员名单附件}
\attachmentitem{3.会议纪要附件}

\subsection{发文机关与日期}
\signature{中华人民共和国某部}
\signdate{2026年6月22日}

\subsection{版记要素}
\seprule
\copyto{各省、自治区、直辖市人民政府办公厅，国务院各部委。}
\issueinfo{某部办公厅}{2026年6月22日印发}

\subsection{附注}
\notes{此件公开发布}

\section{表格中的数字格式化}

公文中的财务报表（预算表、决算表、收支明细等）需要对金额数字进行千位分隔和小数点对齐。
\texttt{gbt9704.cls} 已内置 \texttt{fcolumn} 宏包，提供以下预定义列类型：

\begin{description}
  \item[\texttt{C}] 中式财务列：逗号千分位，小数点，三位分组（1,234.56）。输入时以小数点作小数标记，逗号作千分位分隔。
  \item[\texttt{N}] 数字列：无千分位，两位小数，小数点对齐。
  \item[\texttt{f}] 默认财务列：千分位 \texttt{.}，小数点 \texttt{,}，三位分组（欧洲记法）。
\end{description}

如需自定义列类型，可使用 \texttt{F\{<千分位>\}\{<小数位>\}\{<分组>\}\{<格式>\}} 语法。

\subsection{示例：一般公共预算支出表}
\begin{verbatim}
\begin{tabular}{lC}
    \toprule
    项目 & 金额（万元） \\
    \midrule
    一般公共服务 & 150000.00 \\
    教育支出     & 350000.00 \\
    社会保障     & 128900.50 \\
    \midrule
    \sumline{金额（万元）} \\
    \bottomrule
\end{tabular}
\end{verbatim}

编译效果如下（自动千位分隔、小数对齐、求和）：

\begin{tabular}{lC}
    \toprule
    项目 & 金额（万元） \\
    \midrule
    一般公共服务 & 150000.00 \\
    教育支出     & 350000.00 \\
    社会保障     & 128900.50 \\
    \midrule
    \sumline{金额（万元）} \\
    \bottomrule
\end{tabular}

\vspace{1em}
\begin{description}
  \item[\texttt{\textbackslash sumline\{...\}}] 自动计算该列总和，并在上方绘制横线（默认2pt），第一列显示标签文本。
\end{description}

\subsection{财务表格环境}
使用 \texttt{financialtable} 环境可自动重置合计线计数器，并设置三号仿宋字体的行距：

\begin{verbatim}
\begin{financialtable}{l C C}
    \toprule
    项目 & 预算金额（元） & 实际支出（元） \\
    \midrule
    办公设备    & 150000.00 & 148235.50 \\
    信息化建设  & 350000.00 & 328900.00 \\
    \sumline
    合计 & & \\
    \bottomrule
\end{financialtable}
\end{verbatim}

\subsection{负数处理}
如需负数以括号格式显示，可在导言区使用 \verb|\PassOptionsToPackage{strict}{fcolumn}| 传递选项：

\begin{verbatim}
\PassOptionsToPackage{strict}{fcolumn}
\documentclass[redline]{gbt9704}
\end{verbatim}

\section{字体依赖说明}
若系统未安装"方正大标宋（FZDaBiaoSong-B06）"字体，宏包将自动回退至"黑体（SimHei）"并启用伪粗体，编译时会在终端显示警告信息，但不影响红头排版效果。

建议安装方正大标宋以获得最佳视觉效果。

\section{Emoji 支持}

\subsection{简介}
本宏包支持双引擎 Emoji 渲染：

\begin{description}
  \item[LuaLaTeX（推荐）] 使用 \texttt{bxcoloremoji} → \texttt{twemojis} 渲染管线，输出 PDF 彩色矢量图形，无需系统 Emoji 字体。需安装：\texttt{tlmgr install bxcoloremoji twemojis}。
  \item[XeLaTeX] 使用系统 Emoji 字体（Segoe UI Emoji / NotoEmoji）进行黑白轮廓渲染。COLRv1 字体（如 Noto Color Emoji）不适用于 XeTeX。
\end{description}

公文写作中适当使用 Emoji（如状态标记、进度报告、流程图等）可以提升文档的可读性和视觉表达力。

\subsection{基本用法}

使用 \verb|\emoji| 命令插入彩色 Emoji，LaTeX 源码与渲染效果对照如下：

\begin{center}
\renewcommand{\arraystretch}{1.6}
\begin{tabular}{p{6.5cm} p{4.5cm}}
\toprule
\multicolumn{1}{c}{\textbf{LaTeX 源码}} & \multicolumn{1}{c}{\textbf{渲染效果}} \\
\midrule
\raggedright
\texttt{\textbackslash emoji\{}\emoji{👍}\texttt{\}}\ \
\texttt{\textbackslash emoji\{}\emoji{🎉}\texttt{\}}\ \
\texttt{\textbackslash emoji\{}\emoji{📄}\texttt{\}}\ \
\texttt{\textbackslash emoji\{}\emoji{✅}\texttt{\}}
& \emoji{👍} \emoji{🎉} \emoji{📄} \emoji{✅} \\[4pt]
\bottomrule
\end{tabular}
\end{center}

若未安装 Emoji 字体，可使用 \texttt{noemoji} 选项禁用，编译时会有警告提示：
\begin{verbatim}
\documentclass[noemoji]{gbt9704}
\end{verbatim}

\subsection{常用 Emoji 分类展示}

以下表格列出常用 Emoji 在 LuaLaTeX 下的彩色矢量渲染效果：

\begin{center}
\begin{tabular}{lll}
\toprule
类别 & Emoji（彩色渲染） & 对应命令 \\
\midrule
手势符号 & \emoji{👍} \emoji{👏} \emoji{🤝} \emoji{👋} & \texttt{\textbackslash emoji}\{\emoji{👍}\} \\
状态标记 & \emoji{✅} \emoji{❌} \emoji{⚠} \emoji{🚫} \emoji{ℹ} & \texttt{\textbackslash emoji}\{\emoji{✅}\} \\
办公文档 & \emoji{📄} \emoji{📝} \emoji{📊} \emoji{📋} \emoji{📌} & \texttt{\textbackslash emoji}\{\emoji{📄}\} \\
交通指示 & \emoji{🚀} \emoji{🟢} \emoji{🔴} \emoji{🟡} \emoji{🏁} & \texttt{\textbackslash emoji}\{\emoji{🚀}\} \\
工具符号 & \emoji{🔍} \emoji{🔒} \emoji{🔑} \emoji{⭐} \emoji{💡} & \texttt{\textbackslash emoji}\{\emoji{🔍}\} \\
表情心情 & \emoji{😀} \emoji{🤔} \emoji{🎉} \emoji{🔥} \emoji{💪} & \texttt{\textbackslash emoji}\{\emoji{😀}\} \\
\bottomrule
\end{tabular}
\end{center}

\subsection{在表格中使用 Emoji}

Emoji 可以直接嵌入表格列中，与普通文字混排。LaTeX 源码与渲染效果对照如下：

\begin{center}
\begin{minipage}[t]{0.52\textwidth}
\raggedright\small\ttfamily
\textbackslash begin\{tabular\}\{cll\}\newline
\ \ \textbackslash toprule\newline
\ \ 优先级\ \&\ 状态\ \&\ 说明\ \textbackslash\textbackslash\newline
\ \ \textbackslash midrule\newline
\ \ \textbackslash emoji\{\emoji{🔴}\}\ 高\ \&\ \textbackslash texttt\{critical\}\ \&\ 紧急处理\ \textbackslash\textbackslash\newline
\ \ \textbackslash emoji\{\emoji{🟡}\}\ 中\ \&\ \textbackslash texttt\{pending\}\ \&\ 待审核\ \textbackslash\textbackslash\newline
\ \ \textbackslash emoji\{\emoji{🟢}\}\ 低\ \&\ \textbackslash texttt\{done\}\ \&\ 已完成\ \textbackslash\textbackslash\newline
\ \ \textbackslash bottomrule\newline
\textbackslash end\{tabular\}
\end{minipage}
\hfill
\begin{minipage}[t]{0.40\textwidth}
\centering
\begin{tabular}{cll}
\toprule
优先级 & 状态 & 说明 \\
\midrule
\emoji{🔴} 高 & \texttt{critical} & 紧急处理 \\
\emoji{🟡} 中 & \texttt{pending}  & 待审核 \\
\emoji{🟢} 低 & \texttt{done}     & 已完成 \\
\bottomrule
\end{tabular}
\end{minipage}
\end{center}

\subsection{技术说明}
\begin{itemize}
  \item \textbf{LuaLaTeX}：底层使用 \texttt{bxcoloremoji} → \texttt{twemojis} 渲染管线，输出 PDF 彩色矢量图形（非字体字形），确保跨 PDF 查看器的色彩一致性。Emoji 通过 PDF XObject（矢量表单）嵌入，不会覆盖正文的中/西文字体设置。
  \item \textbf{XeLaTeX}：自动回退至 Segoe UI Emoji（COLRv0，黑白轮廓）或 NotoEmoji-Regular。COLRv1 字体（如 Noto Color Emoji）不适用于 XeTeX（CID 字体嵌入会剥离 COLR 表）。
  \item 多码点 Emoji 序列（如肤色修饰 \emoji{👍}\emoji{🏽}、ZWJ 组合等）在 LuaLaTeX 下仅渲染首个基字符；XeLaTeX 下由系统字体原生支持完整序列。
  \item 如需在 \texttt{verbatim} 或 \texttt{lstlisting} 等等宽环境中显示 Emoji，请使用 \verb|\emoji{}| 命令而非直接输入字符。
\end{itemize}

\section{已知问题与限制}
\begin{itemize}
  \item 推荐使用 LuaLaTeX 引擎以获得最佳效果（彩色 Emoji 矢量渲染）。XeLaTeX 完全可用，但 Emoji 为黑白轮廓渲染。不支持 pdfLaTeX。
  \item 对超长标题（超过一行）的自动换行处理有待优化。
  \item 多码点 Emoji 序列（肤色修饰、ZWJ 组合、国旗对等）在 LuaLaTeX + bxcoloremoji 路径下仅渲染首个基字符。
\end{itemize}

\section{许可证}
本宏包采用 \textbf{LPPL-1.3c} 许可证发布。

\section{反馈与贡献}
欢迎通过以下方式提交问题或改进建议：
\begin{itemize}
  \item Issue: \url{https://codeberg.org/songwupei/latex-gbt9704/issues}
  \item 邮箱: \url{songwupei@163.com}
\end{itemize}

\end{document}
