我可以在框架内设置带换行符的 marginpar 吗?

我可以在框架内设置带换行符的 marginpar 吗?

我有一个命令(此处贡献者的补充)可以将文本放在边距中。我想为该文本添加边框以使其突出,但当我尝试这样做时,我失去了使用换行符分隔文本的能力。我尝试了 \frame、\framebox 和 \fbox,结果相同。这是使用 \framebox 的 MWE:

\documentclass{amsbook}

\newcommand{\MargNote}[2] % Places text in the margin
    { % start of MargNote
    \marginpar{  % start of  marginpar
        \framebox{ % start of framebox
        \vspace{#1} 
        \footnotesize \textit{\textbf{#2}}  
        }  % end of marginpar
        } % end of framebox
    } % end of MargNote

\begin{document}

\MargNote{0pt}{This is a very \\ long margin note \\ that I would \\ like to break in \\several places.}

\end{document}

如果我删除 \framebox,文本会在指定位置中断,一切都正常,只是没有框架。也许我想要的是不可行的,但我想问一下。

答案1

你需要使用\框架框或者简单地\fbox`\parbox;后者创建一个段落框并将其内容分成多行。

在此处输入图片描述

编辑。我​​不相信你应该使用\vspace。我认为\fboxsep更好,因为它控制框周围的填充。这是一个长度名称,因此你应该使用它\setlength来更改它,例如

\setlength\fboxsep{6pt} 

您可能仍会使用,\vspace但可能在之外\fbox


示例代码:

\documentclass{amsbook}
\usepackage{ragged2e,microtype}
\usepackage{kantlipsum}

\newcommand{\MargNote}[2] % Places text in the margin
{% start of MargNote
  \setlength\fboxsep{#1}
    % \vspace{#1}\footnotesize%
    \marginpar{% start of  marginpar
      \fbox{\parbox{\dimexpr\marginparwidth-2\fboxsep-2\fboxrule}{% start of framebox
        \RaggedRight\footnotesize
        \textit{\textbf{#2}}
      }  % end of marginpar
    } % end of framebox
  } % end of MargNote
}


\begin{document}
\MargNote{3pt}{This is a very \\ long margin note \\ that I would \\ like to break in \\several places.}

\kant[1-3]

\end{document}

相关内容