我想写一份报告,其中每一章都有相同的结构。例如,第一部分总是优点,第二部分是缺点,第三部分是意见,第四部分是最终结论。目前,我使用以下模式:
\chapter{Report title}
\section{Pros}
pros here
\section{Cons}
cons here
\section{Opinions}
opinions here
\section{Conclusion}
conclusion here
我必须为每份报告重复这种模式。
有没有办法定制文档,使得章节的第一部分总是显示“优点”,第二部分显示“缺点”等等?
所以我可以这样做:
\chapter{Report title}
\section{}
pros here
\section{}
cons here
\section{}
opinions here
\section{}
conclusion here
答案1
@Rizhiy 这样可以吗?
\documentclass[10pt]{book}
\newcommand\pros{\section*{Pros}}
\newcommand\cons{\section*{Cons}}
\newcommand\opinion{\section*{Opinions}}
\newcommand\conclusion{\section*{Conclusion}}
\begin{document}
\chapter{Report title}
\pros
pros here
\cons
cons here
\opinion
opinions here
\conclusion
conclusion here
\end{document}
答案2
也许下面的操作可以如您所愿;其想法是复制原始命令的定义\section
,然后section
根据计数器的值重新定义该命令section
。
我已设置了优点 (1)、缺点 (2)、意见 (3)、结论 (4) 的值,然后使用 的第二个参数\section
作为默认值。此方法还允许您为 传递可选的第一个参数toc
,如示例所示。
% arara: pdflatex
% arara: pdflatex
\documentclass{report}
\let\oldsection\section
\renewcommand{\section}[2][]{%
\ifcase\value{section}
\def\mystring{Pros}
\or
\def\mystring{Cons}
\or
\def\mystring{Opinions}
\or
\def\mystring{Conclusions}
\else
\def\mystring{#2}
\fi
% if #1 is empty, use \mystring in the toc
\ifx\\#1\\
\oldsection[\mystring]{\mystring}
\else
% otherwise use #1
\oldsection[#1]{\mystring}
\fi
}
\begin{document}
\tableofcontents
\chapter{Report title}
\section{}
pros here
\section{}
cons here
\section[something else for the toc]{}
opinions here
\section{}
conclusion here
\section{}
other
\end{document}
答案3
如果每个章节都有四个部分,并且每个部分的标题都是优点、缺点、观点、结论,那么您可以使用单个命令来自动执行操作,该命令根据\thesection
计数器的值打印一个命令(只要\thesection
小于四,否则它什么也不做,如果值是四或更大,也许应该抛出错误或类似操作\thesection
)。
\documentclass{report}
\newcommand\nextsection{
\ifnum\value{section}=3\section{Conclusions}\fi
\ifnum\value{section}=2\section{Opinions}\fi
\ifnum\value{section}=1\section{Cons}\fi
\ifnum\value{section}=0\section{Pros}\fi
}
\begin{document}
\chapter{Report Title}
\nextsection
Pros
\nextsection
Cons
\nextsection
Opinions
\nextsection
Conclusions
\end{document}
虽然我认为手动输入带有适当参数的命令可能是更好的做法,\section
因为它不太可能导致意外错误命名的部分。