更新答案2016-03-04

更新答案2016-03-04

我想知道是否有任何正式的环境可以在整个文本中指定“示例”。如果没有,您推荐哪些环境?

答案1

您可以使用amsthm包。根据他们的建议(大多数人都使用这种方法),你应该将环境定义为

\theoremstyle{definition}
\newtheorem{exmp}{Example}[section]

然后使用

\begin{exmp}
This is the example.
\end{exmp}

但请注意,上述定义将为示例提供自己的计数器。如果你已经有使用计数器的定理和定义thm,你可能要考虑使用

\newtheorem[thm]{exmp}

因为如果定理 3、引理 3、定义 3 和示例 3 放在不同的页面上,读者可能会感到非常困惑。

答案2

更新答案2016-03-04

这是使用 的替代方法tcolorbox。此解决方案非常强大,因为它可以处理多种情况:一页、部分页面跨度和多页跨度。我将所有内容包装在一个\NewDocumentEnvironment宏中,xparse因为这样可以轻松识别输入应该是什么。

listings使用 XeLaTeX 和2016-07-05 的用户须知

由于未知问题(见为什么分页符和列表 + tcolorbox + xelatex 之后文本会变成白色(可能是范围泄漏?)?),您应该在每个“testexample”环境之后明确重新应用颜色“黑色”,以确保您的文本在所有分页符条件下均按预期可见。 修复在这里:https://tex.stackexchange.com/a/308854/13552

\AfterEndEnvironment{testexample}{\color{black}} % Bugfix for unknown culprit. When tcolorbox wraps listings compiled with xelatex, subsequential text turns white https://tex.stackexchange.com/questions/308672/why-is-text-turning-white-possible-scope-leak-after-page-break-and-listings

示例语法

\begin{testexample}[<optional title>]
<content of example>
\end{testexample}

代码

如果需要,可以通过替换行来对示例进行编号

title={\exampletext: #1},% use \thetcbcounter to access the testexample counter text

title={\exampletext\ \thetcbcounter: #1},% use \thetcbcounter to access the testexample counter text

\documentclass{article}
\usepackage{fontspec}
\usepackage[most]{tcolorbox}
\newcounter{testexample}
\usepackage{xparse}
\usepackage{lipsum}

\def\exampletext{Example} % If English

\NewDocumentEnvironment{testexample}{ O{} }
{
\colorlet{colexam}{red!55!black} % Global example color
\newtcolorbox[use counter=testexample]{testexamplebox}{%
    % Example Frame Start
    empty,% Empty previously set parameters
    title={\exampletext: #1},% use \thetcbcounter to access the testexample counter text
    % Attaching a box requires an overlay
    attach boxed title to top left,
       % Ensures proper line breaking in longer titles
       minipage boxed title,
    % (boxed title style requires an overlay)
    boxed title style={empty,size=minimal,toprule=0pt,top=4pt,left=3mm,overlay={}},
    coltitle=colexam,fonttitle=\bfseries,
    before=\par\medskip\noindent,parbox=false,boxsep=0pt,left=3mm,right=0mm,top=2pt,breakable,pad at break=0mm,
       before upper=\csname @totalleftmargin\endcsname0pt, % Use instead of parbox=true. This ensures parskip is inherited by box.
    % Handles box when it exists on one page only
    overlay unbroken={\draw[colexam,line width=.5pt] ([xshift=-0pt]title.north west) -- ([xshift=-0pt]frame.south west); },
    % Handles multipage box: first page
    overlay first={\draw[colexam,line width=.5pt] ([xshift=-0pt]title.north west) -- ([xshift=-0pt]frame.south west); },
    % Handles multipage box: middle page
    overlay middle={\draw[colexam,line width=.5pt] ([xshift=-0pt]frame.north west) -- ([xshift=-0pt]frame.south west); },
    % Handles multipage box: last page
    overlay last={\draw[colexam,line width=.5pt] ([xshift=-0pt]frame.north west) -- ([xshift=-0pt]frame.south west); },%
    }
\begin{testexamplebox}}
{\end{testexamplebox}\endlist}


\begin{document}
\lipsum[1]
\begin{testexample}[Latin Text]
\lipsum[2]
\end{testexample}
\lipsum[3]
\begin{testexample}
\lipsum[2]
\end{testexample}
\end{document}

输出

在此处输入图片描述


添加数字

您可能不希望此示例环境中有一个浮点数,因为它本身就是一个盒子。

我可能会添加caption包并像这样实现它:

\begin{testexample}
\centering
\includegraphics[width=!,height=2in]{mountain}
\captionof{figure}{Wildspitze 3,770 m (12,370 ft)}
\end{testexample}

输出

在此处输入图片描述


旧答案

这里有一个替代方法,使用mdframedand xparsexparse不是绝对必要的,但由于它的灵活性,我采用它作为定义命令和环境的主要语法)

输入

\documentclass{article}
\usepackage{fontspec}
\usepackage{mdframed} % Add easy frames to paragraphs
\usepackage{lipsum} % For dummy text
\usepackage{xcolor}
\usepackage{xparse} % Add support for \NewDocumentEnvironment
\definecolor{graylight}{cmyk}{.30,0,0,.67} % define color using xcolor syntax

\newmdenv[ % Define mdframe settings and store as leftrule
  linecolor=graylight,
  topline=false,
  bottomline=false,
  rightline=false,
  skipabove=\topsep,
  skipbelow=\topsep
]{leftrule}

\NewDocumentEnvironment{example}{O{\textbf{Example:}}} % Define example environment
{\begin{leftrule}\noindent\textcolor{graylight}{#1}\par}
{\end{leftrule}}

\begin{document}
\begin{example}
\lipsum[1]
\end{example}

\begin{example}[Example]
\lipsum[1]
\end{example}
\end{document}

输出

在此处输入图片描述

fontspec因为我用 XeLaTeX 编译)

答案3

您可以按如下方式创建一个简单的示例环境:

\documentclass{article}
\usepackage{lipsum}
\newcounter{examplecounter}
\newenvironment{example}{\begin{quote}%
    \refstepcounter{examplecounter}%
  \textbf{Example \arabic{examplecounter}}%
  \quad
}{%
\end{quote}%
}
\begin{document}
\begin{example}\label{ex:simple}
  A simple example environment

  \lipsum[1]
\end{example}

Some text: \lipsum[4]

\begin{example}\label{ex:another}
  Another example
\end{example}

Example~\ref{ex:another} comes after example~\ref{ex:simple}
\end{document}

因此,您拥有的环境基本上只是quote具有自己的计数器的环境的包装器。您可以用其他内容替换引号,以根据自己的喜好添加缩进,但基本思想就在那里。

如果您希望将节号作为示例的一部分(例如示例 1.2),那么就需要做更多的工作,也许像amsthm或这样的内容ntheorem是更好的选择......

请注意,这\refstepcounter会增加环境的计数器,并且还会使环境对于引用机制“可见”。

相关内容