我正在使用memoir
、\book
和\chapter
分段\section
宏。
每本书包含几章,每章包含几节,后面跟着一个包含一两段的“实际反思”部分,后面跟着一个包含一两段的“祈祷”部分。
它们总是出现在每一章的最后,总是有一个,并且总是按照这个顺序。
什么分段/划分宏或其他宏适合将它们标记出来,使我可以灵活地插入标题并将标题和内容的样式设置在与它们将包含的内容不同的位置?
答案1
根据您稍后可能想要对布局进行的更改,您有三个选项:
1. 仅更改标题文本
在这种情况下定义
\newcommand{\prayername}{Prayer}
\newcommand{\practrefname}{Practical refelctions}
并使用所需的切片命令,例如
\chapter{My Chapter (Way 1)}
Text
\section{Normal Section}
Text
\section{\prayername}
Prayer Text
\section{\practrefname}
Practical Reflections Text
2. 制作宏来格式化标题
如果您以后想要更改特殊标题的外观以将其与常规部分区分开来,则可以定义一个宏来格式化特殊标题。您可以将此解决方案与 #1 结合使用,并且可以定义一个宏来以相同的方式格式化两个标题或每个标题一个;我将仅展示一个与 #1 结合使用的宏:
\newcommand{\specialsec}[1]{% Version A
\section*{#1}%
}
\newcommand{\specialsec}[1]{% Version B
\section[#1]{\sffamily\itshape#1}%
}
\makeatletter
\newcommand{\specialsec}[1]{% Version C
\par\addvspace{2\baselineskip}
\noindent\rule{3em}{0.5pt}
\par\vspace{0.5\baselineskip}
\noindent{\sffamily\bfseries\itshape#1\par}
\vspace{0.5\baselineskip}
\@afterheading
}
\makeatother
用法同上,但要:
\specialsec{\prayername}
Prayer Text
\specialsec{\practrefname}
Practical Reflections Text
3. 创建环境
如果您不仅想格式化标题,还想格式化文本,则可以定义一个环境(或两个)。这可以与 #1 和/或 #2 结合使用:
\newenvironment{SpecialSection}{% Version A
\par
\itshape\sffamily
}{
\par
}
\usepackage{mdframed,xcolor}% Version B and C
\newenvironment{SpecialSection}{% Version B
\begin{mdframed}[backgroundcolor=lightgray]
}{
\end{mdframed}
}
\usepackage{mdframed,xcolor}% Version B and C
\newenvironment{SpecialSection}[1]{% Version C
\begin{mdframed}[backgroundcolor=lightgray, frametitle=#1]
}{
\end{mdframed}
}
用法:
% Version A and B
\begin{SpecialSection}
\specialsec{\prayername}
Prayer Text
\end{SpecialSection}
\begin{SpecialSection}{\prayername}
Prayer Text
\end{SpecialSection}
我希望这能给你一些如何实现它的指导。我的解决方案的实际布局相当漂亮 ;-)
我没有说我如何或为什么进行实际格式化,但请随意在评论中提问……
可供试用的 #1–#3 的完整代码
\documentclass{book}
% #1
\newcommand{\prayername}{Prayer}
\newcommand{\practrefname}{Practical Reflections}
% #2
\newcommand{\specialsec}[1]{% Version A
\section*{#1}%
}
%\newcommand{\specialsec}[1]{% Version B
% \section[#1]{\sffamily\itshape#1}%
%}
%\makeatletter
%\newcommand{\specialsec}[1]{% Version C
% \par\addvspace{2\baselineskip}
% \noindent\rule{3em}{0.5pt}
% \par\vspace{0.5\baselineskip}
% \noindent{\sffamily\bfseries\itshape#1\par}
% \vspace{0.5\baselineskip}
% \@afterheading
%}
%\makeatother
% #3A
%\newenvironment{SpecialSection}{% Version A
% \par
% \itshape\sffamily
%}{
% \par
%}
\usepackage{mdframed,xcolor}% Version B and C
%\newenvironment{SpecialSection}{% Version B
% \begin{mdframed}[backgroundcolor=lightgray]
%}{
% \end{mdframed}
%}
\newenvironment{SpecialSection}[1]{% Version C
\begin{mdframed}[backgroundcolor=lightgray, frametitle=#1]
}{
\end{mdframed}
}
\begin{document}
\chapter{My Chapter (Way 1)}
Text
\section{Normal Section}
Text
\section{\prayername}
Prayer Text
\section{\practrefname}
Practical Reflections Text
\chapter{My Chapter (Way 2)}
Text
\section{Normal Section}
Text
\specialsec{\prayername}
Prayer Text
\specialsec{\practrefname}
Practical Reflections Text
\chapter{My Chapter (Way 3, Version A and B)}
Text
\section{Normal Section}
Text
%\begin{SpecialSection}% works only when version A or B is active
% \specialsec{\prayername}
% Prayer Text
%\end{SpecialSection}
%\begin{SpecialSection}
% \specialsec{\practrefname}
% Practical Reflections Text
%\end{SpecialSection}
\chapter{My Chapter (Way 3, Version C)}
Text
\section{Normal Section}
Text
\begin{SpecialSection}{\prayername}
Prayer Text
\end{SpecialSection}
\begin{SpecialSection}{\practrefname}
Practical Reflections Text
\end{SpecialSection}
\end{document}
4. 另一种解决方案,针对两个部分和两种不同的环境提供了更好的格式:
\documentclass{book}
\usepackage{mdframed,xcolor}
\newcommand{\prayername}{Prayer}
\newcommand{\practrefname}{Practical Reflections}
\mdfdefinestyle{specialsecbase}{
hidealllines = true,
leftline = true,
linewidth = 3pt,
frametitlefont = \sffamily\bfseries,
frametitleaboveskip = 0pt,
innerbottommargin = 2.5pt,
}
\newenvironment{Prayer}{
\begin{mdframed}[
style = specialsecbase,
frametitle=\prayername,
]
}{
\end{mdframed}
}
\newenvironment{PracRef}{
\begin{mdframed}[
style = specialsecbase,
linecolor = gray,
frametitle=\practrefname
]
}{
\end{mdframed}
}
\usepackage{lipsum}% for blindtext
\begin{document}
\chapter{My Chapter (Way 4)}
Text
\section{Normal Section}
Text
\begin{Prayer}
\lipsum[1]
\end{Prayer}
\begin{PracRef}
\lipsum[2]
\end{PracRef}
\end{document}