我已经创建了一个tcbtheorem
像这样的新内容:
\usepackage[breakable, theorems, skins]{tcolorbox}
\tcbset{enhanced}
\newtcbtheorem
[number within = chapter]
{myexample}
{examples}
{ breakable,
colback=green!5,
colframe=green!35!black,
fonttitle=\bfseries,
shadow={1mm}{-1mm}{0mm}{black!50!white}
}
{ex}
\newcommand{\cmmNormalExample}[3]{
\begin{myexample}{#1}{#2}
{#3}
\end{myexample}
}
\newcommand{\cmmMarginalExample}[3]{
\marginpar{
\cmmNormalExample{#1}{#2}{#3}
}
}
使用第二个命令 (\cmmMarginalExample) 尝试在边距中创建一个框。上述命令的独立使用是可以的,但是,当我从第一个命令内部使用此命令时,例如:
\cmmNormalExample{Title A}{exlabelA}{
blah, blah, ...
\cmmMarginalExample{Title B}{exlabelB}{
this must (i.e. "I want to") be in the margin
}
blah, blah, ...
}
我收到错误:"! Latex Error: Not in outer par mode."
有什么建议可以避免这个问题吗?
提前致谢。
康斯坦丁诺斯·帕夫洛。
答案1
这种方法有两个关键点。一是放弃,而是使用和 重置\marginpar
的组合。二是添加选项,以便将框放置在“原始”位置,而不是在前/后附加无关命令。\leftskip
\linewidth
nobeforeafter
tcolorbox
\documentclass{article}
\usepackage[breakable, theorems, skins]{tcolorbox}
\tcbset{enhanced}
\usepackage{calc}
\newtcbtheorem
[number within = chapter]
{myexample}
{examples}
{ breakable,nobeforeafter,
colback=green!5,
colframe=green!35!black,
fonttitle=\bfseries,
shadow={1mm}{-1mm}{0mm}{black!50!white}
}
{ex}
\newcommand{\cmmNormalExample}[3]{
\begin{myexample}{#1}{#2}
{#3}
\end{myexample}
}
\newsavebox{\mymargbox}
\newcommand{\cmmMarginalExample}[3]{%
\sbox{\mymargbox}{\vbox{%
\linewidth=1.6in%
\cmmNormalExample{#1}{#2}{#3}%
}}
\leftskip 2in%
\usebox{\mymargbox}
\leftskip -2in%
\vspace*{-\ht\mymargbox}%
}
\begin{document}
\cmmNormalExample{Title A}{exlabelA}{
blah, blah, ...
\cmmMarginalExample{Title B}{exlabelB}{%
this must (i.e. "I want to") be in the margin%
}
blah, blah, ...
}
\end{document}
在此处输入图片描述