具有虚拟参数的环境

具有虚拟参数的环境

这两个命令

\def\look{\@ifnextchar[{\@lookY}{\par\noindent{\textsf{ThinkOut. }}}}
\def\@lookY[#1]{\par\noindent\textsf{ThinkOut (\textit{#1}).}}

提供具有效果的实用程序

\look Deep thought ... 

给出

思考。深思熟虑……

\look[addition] Deep thought...

给出

ThinkOut(补充)。深思熟虑……

我想将上述命令组织到一个环境中,但不使用amsmath.sty+ntheorem.sty实用程序。这是因为使用方案

\newtheoremstyle{Rstyle}{}{}{\itshape}{2em}{\sffamily}{.}{}{}
\theoremstyle{Rstyle}
\newtheorem{rem}{ThinkOut}
\newtheorem*{rem*}{ThinkOut}

不允许我独立于标题“ThinkOut”强调[addition]伪参数 \begin{rem}[addition] ... \end{rem}。是否可以通过上述 ams-internal 实用程序解决问题,还是需要创建自己的命令?格式化参数[addition](如果已调用)在上面的第二个命令中进行了描述\@lookY

答案1

以下是使用 可以做什么的示例thmtools。如果您想要轻松地独立格式化可选参数,则必须使用amsthm,因为可选参数的所有键(notefont,&c.)都不能与 一起使用ntheorem(您可以定义一个新的ntheorem style,但它不像使用 那样容易thmtools)。

\documentclass{article}
\usepackage[utf8]{inputenc} 
\usepackage{xcolor} 
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
headfont=\bfseries,%
notefont=\itshape\mdseries\color{red},
notebraces = {\textup{(}}{\textup{)}},
bodyfont = \mdseries, %
headpunct={.\,—\,}, %
spaceabove=\topsep, %
    spacebelow=\topsep]{Rstyle}

\declaretheorem[name=ThinkOut, numbered=no,style=Rstyle]{look}

 \begin{document}
 \begin{look}
   Deep thought.
 \end{look}

 \begin{look}[addition]
   Deeper thought.
 \end{look}
\end{document} 

在此处输入图片描述

答案2

使用 LaTeX 定理的版本。

\documentclass{article}
\newtheorem{lookthm}{ThinkOut}
\newenvironment{look}[1][\empty]{\begin{lookthm}%
    \ifx#1\empty\else\textit{(#1)}\fi%
  }{\end{lookthm}}
\begin{document}
\begin{look}
  Deep thought ...
\end{look}
\begin{look}[addition]
  Deep thought ...
\end{look}
\end{document}

在此处输入图片描述

答案3

您当然可以使用amsthm;唯一的问题是使用正确的标题规范。

\documentclass{article}
\usepackage{amsthm}

\makeatletter
\newtheoremstyle{Rstyle}
  {}
  {}
  {\itshape}
  {2em}
  {\sffamily}
  {.}
  { }
  {\thmname{#1} \thmnumber{#2}\@ifnotempty{#3}{ (\textsl{#3})}}
\makeatother
\theoremstyle{Rstyle}
\newtheorem{rem}{ThinkOut}
\newtheorem*{rem*}{ThinkOut}

\begin{document}

\begin{rem}
Some text.
\end{rem}

\begin{rem}[addition]
Some text.
\end{rem}

\end{document}

在此处输入图片描述

答案4

只要您不需要编号和引用,您就可以使用纯 LaTeX 定义带有可选参数的环境。

\newenvironment{thinkout}[1][]%
  {\begin{trivlist}
   \item[]%
   {\bfseries ThinkOut%
   \if\relax\detokenize{#1}\relax\else\ (#1)\fi
   .}\quad
  }%
  {\end{trivlist}}

用作

\begin{thinkout} ... \end{thinkout}
\begin{thinkout}[optional addendum] ... \end{thinkout}

在此处输入图片描述

\documentclass{article}
\newenvironment{thinkout}[1][]%
  {\begin{trivlist}
   \item[]%
   {\bfseries ThinkOut%
   \if\relax\detokenize{#1}\relax\else\ (#1)\fi
   .}\quad
  }%
  {\end{trivlist}}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\begin{thinkout}
  Deep thought \dots
\end{thinkout}
\lipsum[2]
\begin{thinkout}[addition]
  Deep thought \dots
\end{thinkout}

\lipsum[2]
\end{document}

相关内容