问题:

问题:

我正在使用 KOMA-scripts\makenote*{}命令在页边空白处做笔记。示例:

%! TEX program = lualatex

\documentclass[oneside, titlepage = false, fontsize = 12pt]{scrbook}

\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}

\usepackage{fontspec,geometry}

\setmainfont{cmun}[
    Extension=.otf,
    UprightFont=*rm,
    ItalicFont=*ti,
    BoldFont=*bx,
    BoldItalicFont=*bi,
]

\usepackage[most]{tcolorbox}

\newtcbtheorem[]{memoanmich}{Memo an mich selbst}{colback=black!15,colframe=black!80,fonttitle=\bfseries,left=0mm,right=0mm}{memoanmich}

\begin{document}

\newgeometry{left=1.8cm, right=5.6cm, top = 2cm, bottom = 3cm, marginpar=5cm, footskip = 1cm}

\makenote*{\begin{small}\begin{memoanmich*}{}{}
    Some maths: $\sum_{n=1}^{\infty}1/n^2$ 
\end{memoanmich*}\end{small}}

test

\end{document}

结果: \makenote* 示例

本例相关代码:

\makenote*{\begin{small}\begin{memoanmich*}{}{}
    Some maths: $\sum_{n=1}^{\infty}1/n^2$
\end{memoanmich*}\end{small}}

为了使内容更具可读性,我决定引入一个新环境:

\newenvironment{mams}
{\begin{small}\begin{memoanmich*}{}{}}
{\end{memoanmich*}\end{small}}

现在我的笔记命令如下所示:

\makenote*{\begin{mams}
    Some maths: $\sum_{n=1}^{\infty}1/n^2$
\end{mams}}

问题:

是否可以将\makenote*{}命令添加到我的环境中mams,以便我的注释命令如下所示:

\begin{mams}
    Some maths: $\sum_{n=1}^{\infty}1/n^2$
\end{mams}

或者像这样:

\begin{mams}{Some maths: $\sum_{n=1}^{\infty}1/n^2$}
\end{mams}

我的尝试

包裹环境

相反\newenvironment,我尝试了以下代码:

\usepackage{environ}
\NewEnviron{mams}{%
\makenote*{\begin{small}\begin{memoanmich*}{}{}%
\BODY
\end{memoanmich*}\end{small}}}

我收到的错误:

Undefined control sequence. \begin {small}\begin{memoanmich*}{}{}\BODY


\begingroup\endgroup

\newenvironment{mams}{\makenote*\begingroup\begin{small}\begin{memoanmich*}{}{}}
{\end{memoanmich*}\end{small}\endgroup}

我收到的错误:

LaTeX Error: \begin{document} ended by \end{mams}.
Extra \endgroup.

\newsavebox

\newsavebox{\mymemobox}
\newenvironment{mams}[1]{\sbox\mymemobox{#1}}{\makenote*{\begin{small}\begin{memoanmich*}{}{}\usebox{\mymemobox}\end{memoanmich*}\end{small}}}

相关的注释命令现在如下所示:

\begin{mams}{Some maths: $\sum_{n=1}^{\infty}1/n^2$}\end{mams}

编译时没有任何错误,但我没有得到注释本身,即tcolorbox绘制彩色框,字体很小(这意味着环境\begin{small}处于活动状态),彩色框在边缘(这意味着命令\makenote*{}有效)。唯一缺少的是注释本身,即

Some maths: $\sum_{n=1}^{\infty}1/n^2$

缺少笔记内容

完整代码:

%! TEX program = lualatex

\documentclass[oneside, titlepage = false, fontsize = 12pt]{scrbook}

\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}

\usepackage{fontspec,geometry}

\setmainfont{cmun}[
    Extension=.otf,
    UprightFont=*rm,
    ItalicFont=*ti,
    BoldFont=*bx,
    BoldItalicFont=*bi,
]

\usepackage[most]{tcolorbox}

\newtcbtheorem[]{memoanmich}{Memo an mich selbst}{colback=black!15,colframe=black!80,fonttitle=\bfseries,left=0mm,right=0mm}{memoanmich}


\newsavebox{\mymemobox}
\newenvironment{mams}[1]{\sbox\mymemobox{#1}}{\makenote*{\begin{small}\begin{memoanmich*}{}{}\usebox{\mymemobox}\end{memoanmich*}\end{small}}}

\begin{document}

\newgeometry{left=1.8cm, right=5.6cm, top = 2cm, bottom = 3cm, marginpar=5cm, footskip = 1cm}

\begin{mams}{Some maths: $ \sum_{n=1}^{\infty}1/n^2$}\end{mams}

test

\end{document}

答案1

您可以使用 xparse 和 b 参数类型:

\documentclass[oneside, titlepage = false, fontsize = 12pt]{scrbook}

\usepackage{scrlayer-scrpage}
\usepackage{scrlayer-notecolumn}

\usepackage{fontspec,geometry}

\setmainfont{cmun}[
    Extension=.otf,
    UprightFont=*rm,
    ItalicFont=*ti,
    BoldFont=*bx,
    BoldItalicFont=*bi,
]

\usepackage[most]{tcolorbox}

\newtcbtheorem[]{memoanmich}{Memo an mich selbst}{colback=black!15,colframe=black!80,fonttitle=\bfseries,left=0mm,right=0mm}{memoanmich}

\usepackage{xparse} %no longer needed in next latex version
\NewDocumentEnvironment{mams}{b}
 {%
   \makenote*{%
    \small
     \begin{memoanmich*}{}{}
     #1
     \end{memoanmich*}}%
 }{}


\begin{document}

\newgeometry{left=1.8cm, right=5.6cm, top = 2cm, bottom = 3cm, marginpar=5cm, footskip = 1cm}

\begin{mams}
    Some maths: $\sum_{n=1}^{\infty}1/n^2$
\end{mams}
test

\end{document}

相关内容