为定理配备边距栏

为定理配备边距栏

使用 PDFLaTeX,我尝试在定理类环境中在文档外边距中配备彩色条。这些定理已经使用了(不错的)thmbox格式。在尝试了framedmdframe包之后,我发现真正使用文档边距的最佳解决方案是包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选项。它可以跨页面分页。ntheoremframed

\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} 

在此处输入图片描述

相关内容