一些 LaTeX 格式化命令(例如\textcolor{red}{...}
、\sout{...}
或 )\textsf{...}
在内部内容为单个段落时可以正常工作,但如果在参数中放置段落分隔符,则编译失败。
\textsf{This paragraph is in sans-serif.} % OK
\textsf{This one too.
So should this one be.} % Doesn't compile.
问题 1:为什么会这样?我觉得我还没有理解 LaTeX 内部如何处理这些命令。有没有一种通用的方法来构建一个适用于段落的命令,或者将一个不适用于段落的命令变成一个适用于段落的命令?
问题 2:我可以使用哪些命令(如果有)将以下更改应用于文本中包含多个段落的块?对于颜色,我知道我已经可以使用环境了color
。
- 无衬线字体
\textsf
或等宽字体\texttt
- 删除线和下划线
\sout
以及\ul
(来自ulem
)
答案1
某些命令不允许新建段落: \textbf
、\textsf
、\texttt
等。要达到您想要的效果,您需要使用不同的形式: \bfseries
、\sffamily
、\ttfamily
、\itshape
。如果您加载xcolor
包,那么您可以发出\color{<name_of_color>}
。
如果您不想影响整个文档的更改,则需要将这些命令嵌入某种分组中。这可以像 一样简单,{...}
或者像 这样的环境\begin{minipage}{<width>}...\end{minipage}
。
以下是 MWE:
\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
{\bfseries \lipsum[1-2] }
{\sffamily \lipsum[1-2] }
{\itshape \lipsum[1-2] }
{\color{blue} \lipsum[1-2] }
\begin{itemize}\bfseries\itshape\color{orange}
\item A
\item B
\item C
\end{itemize}
\lipsum[1]
\end{document}
如果您不想费力地将内容嵌入另一个环境或括号中,则可以使用\normalfont
来恢复设置。但是,这不适用于恢复颜色;为此,您必须发出\normalcolor
或\color{black}
。
\lipsum[1]
\color{green}\itshape
\lipsum[1]
\color{black}\normalfont
\lipsum[1]
以类似的方式,您可以通过发出\large
或\scriptsize
等来更改字体大小,要撤消这些命令的效果(如果没有嵌入某种组中)请使用\normalsize
。
总之
每个字体更改命令都与一个可跨多个段落起作用的命令配对。
\textbf{...} \bfseries
\textsf{...} \sffamily
\textit{...} \itshape
etc.
这些命令都有很好的文档记录,所以你应该不难找到所有这些配对命令。不过,需要注意的是,不是使用\bf
、\it
和诸如此类的命令。这些是 TeX 命令,很可能不会达到您想要的效果。LaTeX 命令\bfseries
、\itshape
只会改变您想要的文本外观(系列类型、形状、系列)。除了 LaTeX 命令产生的更微妙的效果之外,根据您使用的字体是否提供支持,LaTeX 命令的效果是附加的。
如果第二列中的命令未嵌入某种组,而您想要恢复默认行为,则可以发出
\normalfont
您可以使用命令更改字体大小
\large
\small
\footnotesize
可以使用以下方法恢复默认大小
\normalsize
如果您已加载,则可以更改颜色属性xcolor
。与\textxx{...}
类型命令一样,也有一对:
\textcolor{<color>}{<text>} \color{<color>}
可以通过发出
\normalcolor