我正在准备一个用于编写标准政策和程序 (SOP) 的模板。我想将章节标题放在一个表格单元格中,将编号放在另一个单元格中,如所附快照所示。我的代码如下:
\documentclass[a4paper,12pt,titlepage,oneside,final]{book}
\usepackage{multirow}
\usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{fancyhdr}
\usepackage{longtable}
\begin{document}
\newcommand{\revno}{IR.01}
\newcommand{\printdate}{01-Jan-23}
\newcommand{\issuedate}{01-Jan-24}
\newcommand{\co}{Saudia}
\newcommand{\doctitle}{ADD TITLE}
\newcommand{\owner}{Aircraft Sale}
\newcommand{\revdate}{12-Jun-23}
\chapter{Sale}
\chapter{Buy}
\section{My Section Title}
\def\arraystretch{1.25}
\begin{table}[h]
\begin{tabularx}{\textwidth}{|l|Y|r|c|}
\hline
\multirow{4}{*}{LOGO} & \textbf{Document Title} & \textbf{Policy No.} & 2.1 \\ \cline{2-4}
& \multirow{3}{*}{My Section Title} & \textbf{Issue Date} & \issuedate{} \\ \cline{3-4}
& & \textbf{Rev. Date} & \revdate{} \\ \cline{3-4}
& & \textbf{Ownership} & \owner{} \\ \hline
\end{tabularx}
\end{table}
\end{document}
答案1
使用取决于的计数器chapter
:
如果你并不真的想要\section
,那么你可以根据定义一个数字\chapter
:
\documentclass[12pt,a4paper,oneside,final,sfdefaults=false]{book}
\usepackage{multirow}
\usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{fancyhdr}
\usepackage{longtable}
\begin{document}
\newcommand{\revno}{IR.01}
\newcommand{\printdate}{01-Jan-23}
\newcommand{\issuedate}{01-Jan-24}
\newcommand{\co}{Saudia}
\newcommand{\doctitle}{ADD TITLE}
\newcommand{\owner}{Aircraft Sale}
\newcommand{\revdate}{12-Jun-23}
\newcounter{mynum}\counterwithin{mynum}{chapter}
\newcommand*{\nextnum}{\refstepcounter{mynum}}
\chapter{Sale}
\chapter{Buy}
\nextnum
\def\arraystretch{1.25}
\begin{table}[h]% Does not really make sense.
\begin{tabularx}{\textwidth}{|l|Y|r|c|}
\hline
\multirow{4}{*}{LOGO} & \textbf{Document Title} & \textbf{Policy No.} & \themynum \\ \cline{2-4}
& \multirow{3}{*}{The Title where I want it} & \textbf{Issue Date} & \issuedate{} \\ \cline{3-4}
& & \textbf{Rev. Date} & \revdate{} \\ \cline{3-4}
& & \textbf{Ownership} & \owner{} \\ \hline
\end{tabularx}
\end{table}
\end{document}
引用现有的章节计数器和标题文本:
如果我错了,而你想要一个部分,那么你可以使用\label{…}
after\section{…}
然后\ref{…}
和\nameref{…}
(最后需要包nameref
):
\documentclass[a4paper,12pt,titlepage,oneside,final]{book}
\usepackage{multirow}
\usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{fancyhdr}
\usepackage{longtable}
\usepackage{nameref}
\begin{document}
\newcommand{\revno}{IR.01}
\newcommand{\printdate}{01-Jan-23}
\newcommand{\issuedate}{01-Jan-24}
\newcommand{\co}{Saudia}
\newcommand{\doctitle}{ADD TITLE}
\newcommand{\owner}{Aircraft Sale}
\newcommand{\revdate}{12-Jun-23}
\chapter{Sale}
\chapter{Buy}
\section{My Section Title}\label{sec:mysectiontitle}
\def\arraystretch{1.25}
\begin{table}[h]
\begin{tabularx}{\textwidth}{|l|Y|r|c|}
\hline
\multirow{4}{*}{LOGO} & \textbf{Document Title} & \textbf{Policy No.} & \ref{sec:mysectiontitle} \\ \cline{2-4}
& \multirow{3}{*}{\nameref{sec:mysectiontitle}} & \textbf{Issue Date} & \issuedate{} \\ \cline{3-4}
& & \textbf{Rev. Date} & \revdate{} \\ \cline{3-4}
& & \textbf{Ownership} & \owner{} \\ \hline
\end{tabularx}
\end{table}
\end{document}
引用当前章节编号和当前章节级别标题(用于目录或页眉):
使用 KOMA-Script 类,您还可以使用\@currentheadentry
或\@currenttocentry
:
\documentclass[12pt,oneside,final,sfdefaults=false,chapterprefix]{scrbook}
\usepackage{multirow}
\usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{fancyhdr}
\usepackage{longtable}
\begin{document}
\newcommand{\revno}{IR.01}
\newcommand{\printdate}{01-Jan-23}
\newcommand{\issuedate}{01-Jan-24}
\newcommand{\co}{Saudia}
\newcommand{\doctitle}{ADD TITLE}
\newcommand{\owner}{Aircraft Sale}
\newcommand{\revdate}{12-Jun-23}
\chapter{Sale}
\chapter{Buy}
\section{My Section Title}
%\subsection{My Subsection Title}
\def\arraystretch{1.25}
\begin{table}[h]
\begin{tabularx}{\textwidth}{|l|Y|r|c|}
\hline
\multirow{4}{*}{LOGO} & \textbf{Document Title} & \textbf{Policy No.} & \thesection \\ \cline{2-4}
& \multirow{3}{*}{\csname @currenttocentry\endcsname} & \textbf{Issue Date} & \issuedate{} \\ \cline{3-4}
& & \textbf{Rev. Date} & \revdate{} \\ \cline{3-4}
& & \textbf{Ownership} & \owner{} \\ \hline
\end{tabularx}
\end{table}
\end{document}
但这只是一种技巧,因为使用\@currenttocentry
实际上并不是指章节标题,而是将添加到目录中的章节标题。而且它并不总是显示章节标题。例如,如果您\subsection
在我的示例中激活命令,它将显示子章节标题。
使用表格作为章节标题:
如果表格应该是章节标题,KOMA-Script 也会支持这一点:
\documentclass[12pt,sfdefaults=false,chapterprefix,oneside,final]{scrbook}
\usepackage{multirow}
\usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{fancyhdr}
\usepackage{longtable}
\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
\Ifstr{#1}{section}{%
\def\arraystretch{1.25}
\begin{tabularx}{\textwidth}{|l|Y|r|c|}
\hline
\multirow{4}{*}{LOGO} & \textbf{Document Title} & \textbf{Policy No.} & #3 \\ \cline{2-4}
& \multirow{3}{*}{#4} & \textbf{Issue Date} & \issuedate{} \\ \cline{3-4}
& & \textbf{Rev. Date} & \revdate{} \\ \cline{3-4}
& & \textbf{Ownership} & \owner{} \\ \hline
\end{tabularx}
}%
{\@hangfrom{\hskip#2#3}#4}%
}
\makeatother
\setkomafont{section}{\normalfont}
\begin{document}
\newcommand{\revno}{IR.01}
\newcommand{\printdate}{01-Jan-23}
\newcommand{\issuedate}{01-Jan-24}
\newcommand{\co}{Saudia}
\newcommand{\doctitle}{ADD TITLE}
\newcommand{\owner}{Aircraft Sale}
\newcommand{\revdate}{12-Jun-23}
\chapter{Sale}
\chapter{Buy}
\section{My Section Title}
\end{document}
我确信,你可以使用标准类和包来做类似的事情titlesec
(例如如何在章节标题前添加图片作为入口点)。
通过用于表格样式部分标题的附加变量来扩展部分命令:
KOMA-Script 类的一个非常好的特性是,您可以扩展命令的可选参数\section
,例如设置日期和所有权:
\documentclass[12pt,sfdefaults=false,chapterprefix,oneside,final,sfdefaults=false,headings=optiontotocandhead]{scrbook}
\usepackage{multirow}
\usepackage{tabularx} \newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{fancyhdr}
\usepackage{longtable}
\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
\Ifstr{#1}{section}{%
\def\arraystretch{1.25}
\begin{tabularx}{\textwidth}{|l|Y|r|c|}
\hline
\multirow{4}{*}{LOGO} & \textbf{Document Title} & \textbf{Policy No.} & #3 \\ \cline{2-4}
& \multirow{3}{*}{#4} & \textbf{Issue Date} & \issuedate{} \\ \cline{3-4}
& & \textbf{Rev. Date} & \revdate{} \\ \cline{3-4}
& & \textbf{Ownership} & \owner{} \\ \hline
\end{tabularx}
}%
{\@hangfrom{\hskip#2#3}#4}%
}
\makeatother
\newcommand*{\revdate}{}
\newcommand*{\issuedate}{}
\newcommand*{\owner}{}
\AddtoDoHook{heading/preinit/section}{% Initialize the values to N.A. with
% every \section.
\renewcommand*{\revdate}{N.A.}%
\renewcommand*{\issuedate}{N.A.}%
\renewcommand*{\owner}{N.A.}%
\csname @gobble\endcsname
}
% New \section options
\FamilyStringKey[.section]{KOMAarg}{issuedate}{\issuedate}
\FamilyStringKey[.section]{KOMAarg}{revdate}{\revdate}
\FamilyStringKey[.section]{KOMAarg}{owner}{\owner}
\setkomafont{section}{\normalfont}
\begin{document}
\newcommand{\revno}{IR.01}
\newcommand{\printdate}{01-Jan-23}
\newcommand{\co}{Saudia}
\chapter{Sale}
\chapter{Buy}
\section[issuedate=01-Jan-24,revdate=12-Jun-23,owner=Aircraft Sale]{My Section Title}
\end{document}
结果和以前一样: