![实现“aside”环境来解释计算细节](https://linux22.com/image/238190/%E5%AE%9E%E7%8E%B0%E2%80%9Caside%E2%80%9D%E7%8E%AF%E5%A2%83%E6%9D%A5%E8%A7%A3%E9%87%8A%E8%AE%A1%E7%AE%97%E7%BB%86%E8%8A%82.png)
我希望将文本的各部分设置为较小的字体,并采用不同的缩进,并在视觉上与文本的其余部分分开(例如通过水平线)。我希望使用这种方法来突出文本中不太重要的部分,这些部分会给出一些额外的解释(例如陈述一个定理,然后为感兴趣的人以较小的字体给出证明)。
我从另一个(旧)文档中复制了一个定义,但不幸的是它存在一些问题。请帮助解决这些问题。
下面给出了一个例子。取消注释有问题的部分将触发错误(参见注释)。
\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{framed} % For the "details" environment
% just a horizontal rule for the "details" environment
\newcommand{\optionrule}{\noindent\rule{1.0\textwidth}{0.75pt}}
% the "details" environment declaration.
\newenvironment{aside}{%
\def\FrameCommand{\hspace{2em}}
\MakeFramed {\advance\hsize-\width \small}\optionrule}
{\newline\optionrule\endMakeFramed}
\begin{document}
\begin{aside}
asd
%\begin{figure}
% (some figure)
% adding this figure causes a ``Floats lost'' error.
%\end{figure}
asd
% an empty line here causes a ``There's no line to end here error''
\end{aside}
\end{document}
答案1
在框架包您可以轻松创建和定制您需要的环境。
用 定义的环境mdframed
不允许浮点数(与framed
包中的环境情况相同),但您不需要在其中一个环境中使用浮点数。借助包\captionof
中的命令,caption
您可以为图像或表格添加标题。
一个小例子(当然,做必要的修改以满足您的需要);我稍微修改了发布的原始设计,使环境居中,以便规则以相同的量悬挂在两端(遵循芭芭拉·比顿的评论):
\documentclass[a4paper]{article}
\usepackage{mdframed}
\usepackage{caption}
\usepackage{lipsum}% just to generate some filler text
\newenvironment{aside}
{\begin{mdframed}[style=0,%
leftline=false,rightline=false,leftmargin=2em,rightmargin=2em,%
innerleftmargin=0pt,innerrightmargin=0pt,linewidth=0.75pt,%
skipabove=7pt,skipbelow=7pt]\small}
{\end{mdframed}}
\begin{document}
\lipsum[1]
\begin{aside}
\lipsum[1]
\begin{center}
\rule{4cm}{2cm}
\captionof{figure}{A test figure}
\label{fig:test}
\end{center}
\end{aside}
\end{document}
如果要继续使用framed
并保留原始布局,则通过从\newline
的定义中删除aside
,可以防止在关闭环境之前留下空行而产生的错误。您可以改用类似这样的方法:
\usepackage{framed}
\newcommand{\optionrule}{\noindent\rule{1.0\textwidth}{0.75pt}}
\newenvironment{aside}
{\def\FrameCommand{\hspace{2em}}
\MakeFramed {\advance\hsize-\width}\optionrule\small}
{\par\vskip-\smallskipamount\optionrule\endMakeFramed}
为了能够有脚注,您可以使用\footnotemark
,\footnotetext
机制:
\begin{aside}
\lipsum*[1] Text\footnotemark
\begin{center}
\rule{4cm}{2cm}
\captionof{figure}{A test figure}
\label{fig:test}
\end{center}
\end{aside}
\footnotetext{A test footnote}