如何在 `mdframed` 环境中使用 `\marginnote`?(后续)

如何在 `mdframed` 环境中使用 `\marginnote`?(后续)

我需要双面簇绒纸文档的边距。有一个接近的问题,它已经这个答案。这个答案很完美。他们的输出是: 在此处输入图片描述 (您可以在页面内部看到这条线)

不同之处在于我使用了tufte-book类,但该示例针对的是article类。当我\marginnote{Hello}在此代码片段中使用时,LaTex 会给出错误! LaTeX Error: Not in outer par mode.

\begin{mdframed}[style=MDFStyGrayBar]
\lipsum
%\marginnote{Hello}
\lipsum
\end{mdframed}

(完整代码被厚颜无耻地从链接中窃取,见下文)

我想知道如何\marginnotemdframed环境中使用,如果可能的话。我的搜索结果是这个问题,同样没有任何答案。

我还有相当多的\marginnotemarginfigurefigure*浮点数(带有一些 tikz 填充)。我认为它们都具有相同的工作原理,因此我希望它们至少在其中一个问题得到解决后就能正常工作。

欢迎任何代码修改,因为我仍然不明白该解决方案如何工作(当我看到@和周围的代码时我感到很害怕)。

\documentclass[twoside,symmetric,notoc,justified]{tufte-book}%

\usepackage[utf8]{inputenc}
\usepackage[latin]{babel}
\usepackage[OT1]{fontenc}
\usepackage[pdftex]{graphicx}
\usepackage{lipsum}
\usepackage{float}
\usepackage{pgf,caption,calc}
\usepackage{tikz,tkz-euclide}
\usetkzobj{all}


\geometry{
  %showframe,
  paperwidth=145mm,
  paperheight=215mm,
  inner=16mm,
  outer=10mm,
  top=10mm,
  bottom=40mm,
  marginparsep=3mm,
  marginparwidth=40mm,
  includemp,
  includehead,
}
\usepackage[framemethod=TikZ]{mdframed} 
\makeatletter
\newrobustcmd*\if@mdf@pageodd@bar{%
 \zref@refused{mdf@pagelabel-\the\value{mdf@zref@counter}}%
 \ifodd\zref@extract{mdf@pagelabel-\the\value{mdf@zref@counter}}%
                    {mdf@pagevalue}%
    \setlength\mdf@rightmargin@length{\mdf@outermargin@length}%
    \setlength\mdf@leftmargin@length{\mdf@innermargin@length}%
    \mdfsetup{hidealllines=true,leftline=true}%
 \else
    \setlength\mdf@rightmargin@length{\mdf@innermargin@length}%
    \setlength\mdf@leftmargin@length{\mdf@outermargin@length}%
    \mdfsetup{hidealllines=true,rightline=true}%
 \fi%
}
\newrobustcmd*\changepageodd{\let\if@mdf@pageodd\if@mdf@pageodd@bar}
\makeatother
\mdfdefinestyle{MDFStyGrayBar}{%
    linecolor=gray,
    backgroundcolor=white,
    %
    outerlinewidth=5pt,
    %
    topline=false,
    bottomline=false,
    rightline=false,
    leftline=true,
    %
    innertopmargin=4pt, %\baselineskip
    innerbottommargin=8pt,
    innerrightmargin=3pt,
    innerleftmargin=3pt,
    %
    skipabove=\topskip,
    skipbelow=\topskip,
    settings={\changepageodd}
}
\usepackage{showframe,lipsum}
\begin{document}

\noindent Some normal text.
\begin{mdframed}[style=MDFStyGrayBar]
\lipsum
%\marginnote{Hello}
\lipsum
\end{mdframed}

\end{document}

答案1

tufte-book 类的定义\marginnote基于\marginpar。这是一个浮点数,它不能在 mdframed 环境中工作。

您可以切换到包\marginnote的定义marginnote,它不是浮点数。请注意,这会完全覆盖 tufte 定义。因此,tufte 的所有设置或选项均不适用:

\documentclass[twoside,symmetric,notoc,justified]{tufte-book}%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[framemethod=TikZ]{mdframed}


\let\marginnote\someundefinedcommand
\usepackage{marginnote}

\begin{document}


\noindent Some normal text.
\begin{mdframed}
blblb 
\marginnote{Hello}
\end{mdframed}

\end{document}

在此处输入图片描述

相关内容