我以为我的以前的问题将定理的名称、编号和注释放在边注栏中的问题已经得到解决。
事实上,我的回答中提出的代码按预期工作:
\documentclass[fontsize=11pt, paper=a4, DIV=classic]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{xpatch}
\usepackage{ragged2e}
\usepackage{changepage}
\usepackage{blindtext}
\KOMAoption{mpinclude}{true}
\recalctypearea
\setlength{\marginparsep}{2em}
\setlength{\marginparwidth}{10em}
\makeatletter
\newcommand{\RaggedOuter}%
{%
\if@twoside%
\checkoddpage%
\ifoddpage%
\RaggedRight%
\else%
\RaggedLeft%
\fi%
\else%
\RaggedRight%
\fi%
}
\newcommand{\cl@ThmMarginCaption}%
{
\leavevmode%
\marginpar%
{%
\RaggedOuter%
\hbadness=10000%
\the\thm@headfont\thmt@thmname~\thechapter.\arabic{\thmt@envname}\\%
\the\thm@notefont\thmt@optarg%
}%
}
\declaretheoremstyle%
[%
spaceabove={\parskip},%
spacebelow=0pt,%
headindent=0pt,%
postheadspace=0pt,%
headformat={},%
headpunct={},%
headfont=\sffamily\bfseries\small,%
notefont=\rmfamily\mdseries\small,%
bodyfont=\normalfont,%
preheadhook={},%
postheadhook={\cl@ThmMarginCaption},%
]%
{thmmcaption}
\newcommand{\DeclareTheorem}[2][]%
{%
\declaretheorem[#1]{#2}%
\expandafter\let\csname cl@orig@#2\expandafter\endcsname\csname#2\endcsname%
\expandafter\let\csname cl@orig@end#2\expandafter\endcsname\csname end#2\endcsname%
\renewenvironment{#2}[1][]%
{\csname cl@orig@#2\endcsname[##1]\ignorespaces}%
{\csname cl@orig@end#2\endcsname}%
}
\DeclareTheorem[name=Definition, numberwithin=chapter, style=thmmcaption]{definition}
\DeclareTheorem[name=Satz, numberwithin=chapter, style=thmmcaption]{theorem}
\makeatother
\begin{document}
\chapter{Theorems with margin captions}
\blindtext
\begin{definition}[Kellerautomat (KA)\\pushdown automaton (PDA)]
Eine ganz wichtige Definition, die natürlich länger als eine Zeile sein sollte, um sehen zu können, ob alles funktioniert wie gewünscht.
\end{definition}
\blindtext
\clearpage
\blindtext
\begin{theorem}[Satz von Radó]
Die Radó-Funktion ist nicht berechenbar.
\end{theorem}
\blindtext
\end{document}
包含定理信息的边注被放置在所需位置。
当我开始将此解决方案与其他代码混合时,strict
包选项changepage
就变得必不可少。使用此选项,边注会向下移动,如您在此处所见。
%
当它不存在时,在每行末尾添加changepage.sty
根本没有帮助。
为什么该选项会对strict
我的定义产生影响\RaggedOuter
?
答案1
在水平模式下使用严格形式,这样它就不会强制改变行距,也要注意误用%
\documentclass[fontsize=11pt, paper=a4, DIV=classic]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{xpatch}
\usepackage{ragged2e}
\usepackage[strict]{changepage}
\usepackage{blindtext}
\KOMAoption{mpinclude}{true}
\recalctypearea
\setlength{\marginparsep}{2em}
\setlength{\marginparwidth}{10em}
\makeatletter
\newcommand{\RaggedOuter}
{%
\if@twoside
\leavevmode\checkoddpage
\ifoddpage
\RaggedRight
\else
\RaggedLeft
\fi
\else
\RaggedRight
\fi
\ignorespaces}
\newcommand{\cl@ThmMarginCaption}
{
\leavevmode
\marginpar
{%
\RaggedOuter
\hbadness=10000
\the\thm@headfont\thmt@thmname~\thechapter.\arabic{\thmt@envname}\\%
\the\thm@notefont\thmt@optarg
}%
}
\declaretheoremstyle
[
spaceabove={\parskip},
spacebelow=0pt,
headindent=0pt,
postheadspace=0pt,
headformat={},
headpunct={},
headfont=\sffamily\bfseries\small,
notefont=\rmfamily\mdseries\small,
bodyfont=\normalfont,
preheadhook={},
postheadhook={\cl@ThmMarginCaption},
]
{thmmcaption}
\newcommand{\DeclareTheorem}[2][]
{%
\declaretheorem[#1]{#2}%
\expandafter\let\csname cl@orig@#2\expandafter\endcsname\csname#2\endcsname
\expandafter\let\csname cl@orig@end#2\expandafter\endcsname\csname end#2\endcsname
\renewenvironment{#2}[1][]%
{\csname cl@orig@#2\endcsname[##1]\ignorespaces}
{\csname cl@orig@end#2\endcsname}
}
\DeclareTheorem[name=Definition, numberwithin=chapter, style=thmmcaption]{definition}
\DeclareTheorem[name=Satz, numberwithin=chapter, style=thmmcaption]{theorem}
\makeatother
\begin{document}
\chapter{Theorems with margin captions}
\blindtext
\begin{definition}[Kellerautomat (KA)\\pushdown automaton (PDA)]
Eine ganz wichtige Definition, die natürlich länger als eine Zeile sein sollte, um sehen zu können, ob alles funktioniert wie gewünscht.
\end{definition}
\blindtext
\clearpage
\blindtext
\begin{theorem}[Satz von Radó]
Die Radó-Funktion ist nicht berechenbar.
\end{theorem}
\blindtext
\end{document}