使用 PDFLaTeX,我尝试在定理类环境中在文档外边距中配备彩色条。这些定理已经使用了(不错的)thmbox
格式。在尝试了framed
和mdframe
包之后,我发现真正使用文档边距的最佳解决方案是包changebar
。
我尝试使用来修补为每个定理定义的命令etoolbox
,但没有成功,经过一番搜索后,文档regexpatch
告诉我(以一种相当复杂的方式——对我来说)这可能是因为可选的第一个参数。
但是,使用regexpatch
'sxapptocmd
代替\apptocmd
并没有帮助。这是我的代码。
\documentclass[12pt]{article}
\usepackage{thmbox}
\usepackage[pdftex,color,outerbars]{changebar}
\usepackage{regexpatch}
\newtheorem{definition}{Definition}
\xapptocmd{\definition}{\begin{changebar}}{}{\message{failure}}
\xpretocmd{\enddefinition}{\end{changebar}}{}{\message{failure}}
\begin{document}
\begin{definition}[Square]
Given any number $a$, the square of $a$ is the number
\[a^2=a\times a.\]
\end{definition}
\end{document}
编译此代码时出现 5 个错误,主要是由于环境关闭不当(\begin{definition}
以 结尾\end{changebar}
是第一个错误)。
如果我注释掉\usepackage{thmbox}
,编译将继续,但边缘不会出现任何变更栏。
如果我注释掉序言中的修补行并在文档中写入
\begin{definition}[Square]\begin{changebar}
Given any number $a$, the square of $a$ is the number
\[a^2=a\times a.\]
\end{changebar}\end{definition}
然后我得到了我想要的...但我无法在我的真实文档中的每个定义中都做到这一点。
我究竟做错了什么?
答案1
尝试这个:
请注意,似乎需要三个(!)编译步骤
我有包含定义的 changebar 环境,因为我没有仔细阅读 OP,请使用:
\newenvironment{cdefinition}[1][]
{\if\relax\detokenize{#1}\relax\begin{definition}\else
\begin{definition}[#1]\fi\begin{changebar}}
{\end{changebar}\end{definition}}
为changebar
内部而非外部。
\documentclass[12pt]{article}
\usepackage{thmbox}
\usepackage[pdftex,color,outerbars]{changebar}
\newtheorem{definition}{Definition}
\newenvironment{cdefinition}[1][]
{\begin{changebar}\if\relax\detokenize{#1}\relax\begin{definition}\else
\begin{definition}[#1]\fi}
{\end{definition}\end{changebar}}
\begin{document}
\begin{cdefinition}[Square]
Given any number $a$, the square of $a$ is the number
\[a^2=a\times a\;.\]
\end{cdefinition}
another one:
\begin{cdefinition}[Cube]
Given any number $a$, the cube of $a$ is the number
\[a^3=a\times (a\times a) = (a\times a)\times a\;.\]
\end{cdefinition}
and another one:
\begin{cdefinition}
Given any non-zero number $a$, the inverse of $a$ is the number
\[a^{-1}=\frac1a\;.\]
\end{cdefinition}
\end{document}
选择:
答案2
这是一个基于 的简单解决方案,带有framed
选项。它可以跨页面分页。ntheorem
framed
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage[x11names]{xcolor}
\usepackage{framed}
\usepackage[framed]{ntheorem}
\usepackage{lipsum}
\theoremprework{%
\def\FrameCommand{\hspace{-9pt}\vrule width 3pt \hspace{6pt}}
}%
\newframedtheorem{definition}{Definition}
\theoremprework{%
\def\FrameCommand{{\color{IndianRed3}{\hspace{-8pt}\vrule width 2pt \hspace{6pt}}}}
}
\newframedtheorem{thm}{Theorem}
\begin{document}
\def\FrameHeightAdjust{20pt}
\mbox{}
\vskip 15cm
\begin{definition}[Square]
Given any number $a$, the square of $a$ is the number
\[a^2=a\times a.\]
\end{definition}
\begin{thm}
\lipsum[3]
\end{thm}
\end{document}