答案1
我提供了一个基于 xcoffin
包,并不是为了与提出的其他优秀解决方案竞争,而是为了展示一个伟大包的优势。
本论坛发布的许多问题都与页面上各种元素(如图形、表格、文本等)的定位、特定位置以及相互关系有关。在许多情况下,这些问题与 TeX 的意愿相悖。
随着时间的推移,我能够用geometry
、rotate
、titlepage
和类似的包 替换xcoffin
,设计书籍封面、标题页、海报、章节样式等,从而避免冲突,特别是避免检查全面升级时发现旧项目不再产生相同的输出或根本无法运行的可怕时间。
对我来说,包裹数量越少越好。
xcoffin
仅提供少量具有直观含义的命令(至少对我来说),并且不需要记住数十个键值或选项。顺便说一句,这是一本出色的手册。
我还很欣赏前面提到的一次性作业,生成的代码非常简单,因为无需考虑输入的多种替代方案,而且大部分都是自动记录的。即使书名在项目过程中发生变化,更正也很简单。
当然,之前你需要生产材料,也许使用,,,,amsmath
...... ,然后用它填充棺材。xcolor
tabularx
graphicx
之后,你使用当前文本插入点作为原点,或者使用它们之间的相对位置,将棺材放入页面中,就像图片和页边说明的情况一样。然后,你将结果排版在插入点或在你喜欢的页面的任何其他位置(优点)因为最终的棺材并不是漂浮的。
在这个特定案例中,只需要四个棺材:将收集其他棺材的输出、一个绿色矩形、一个侧面规则和内部文本,如代码所示。矩形和规则的高度都根据文本内容进行调整。
我还添加了一个宏,将其移至前言部分,以减少文档的混乱。为了好玩,并假设文档中将包含多个定义,我添加了一个计数器并应用了该宏五次。
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{xcoffins,calc}
\begin{document}
%% Create and Set Coffins
\NewCoffin\Output %Coffin to hold the others
\NewCoffin\Definition % Definition definition ...
\NewCoffin\BackFrame % Background: green rectangle
\NewCoffin\SideRule %lateral left border
\SetHorizontalCoffin\Output{} % It will provide the reference point to join the others
\SetVerticalCoffin\Definition{\linewidth}{%
\textbf{Definition.} $\gamma^5$ is defined to be the matrix given by:%
\[\gamma^5=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd} \]%
}
%% Make both \BackFrame & SideRule heights = height of Definition + 1*baselineskip
\SetHorizontalCoffin\BackFrame{\color{green!30!gray!15}\rule{\linewidth}{\CoffinTotalHeight\Definition + \baselineskip}}
\SetHorizontalCoffin\SideRule{\color{green!50!black}\rule{3pt}{\CoffinTotalHeight\Definition +\baselineskip}} %vertical side rule
%% Assembly Coffins
\JoinCoffins*\Output[l,t]\BackFrame[l,t] %attach left-top corner of BackFrame to idem of Output
\JoinCoffins*\Output[l,t]\SideRule[l,t] %attach left-top corner of SideRule to idem of Output
\JoinCoffins*\Output[l,t]\Definition[l,t](0pt,-\baselineskip) %attack left-top corner of Definition to idem of Output
%% now your document
We need some more meaningless test to for a multiline paragraph, because these form a basis for the space of all complex $4\times4$ matrices.
%% Typeset Definition
\noindent\TypesetCoffin\Output % at the text insertion point. It is not a float.
\vspace*{\CoffinTotalHeight\Definition}\bigskip %make some room for Output
We can invert this to obtain $ \epsilon_{abcd}i\gamma^{abcd} \lambda^{5}$, but we need som more meaningless test to for a multiline paragraph.
%%%%%%%%%%%%%%%%% macro def, to be moved to the preamble, use as \SetDefinition{your-text}
\newcounter{defcounter}
\newcommand{\SetDefinition}[1]{%
\SetHorizontalCoffin\Output{} % It will be the reference point join the others
\SetVerticalCoffin\Definition{\linewidth}{\textbf{Definition \stepcounter{defcounter}\Roman{defcounter}.} #1} %added counter
%% Make both \BackFrame & SideRule heights = height of Definition + 1*baselineskip
\SetHorizontalCoffin\BackFrame{\color{green!30!gray!15}\rule{\linewidth}{\CoffinTotalHeight\Definition + \baselineskip}}
\SetHorizontalCoffin\SideRule{\color{green!50!black}\rule{3pt}{\CoffinTotalHeight\Definition +\baselineskip}} %vertical side rule
%% Assembly Coffins
\JoinCoffins*\Output[l,t]\BackFrame[l,t] %attach left-top corner of BackFrame to idem of Output
\JoinCoffins*\Output[l,t]\SideRule[l,t] %attach left-top corner of SideRule to idem of Output
\JoinCoffins*\Output[l,t]\Definition[l,t](0pt,-\baselineskip) %attack left-top corner of Definition to idem of Output
%% Typeset ooutput
\noindent\TypesetCoffin\Output % at the text insertion point. It is not a float.
\vspace*{\CoffinTotalHeight\Definition}\bigskip %make some room for Output
}
%%%%%%%%%%%%%%%%%%%%% end macro
\SetDefinition{$\gamma^1$ is defined to be the matrix given by:\[\gamma^1=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd} \]}
\SetDefinition{$\gamma^2$ is defined to be the matrix given by:\[\gamma^2=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd} \]}
\SetDefinition{$\gamma^3$ is defined to be the matrix given by:\[\gamma^3=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd} \]}
\SetDefinition{$\gamma^4$ is defined to be the matrix given by:\[\gamma^4=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd} \]}
\SetDefinition{$\gamma^5$ is defined to be the matrix given above.\\} % a short Definition
\end{document}
答案2
以下内容可能会给你一些关于如何开始的想法:
\documentclass{article}
\usepackage[most]{tcolorbox}
\newtcolorbox{mybox}{
enhanced,
boxrule=0pt,frame hidden,
borderline west={4pt}{0pt}{green!75!black},
colback=green!10!white,
sharp corners
}
\begin{document}
\begin{mybox}
\textbf{Definition} My definition text here
\end{mybox}
\end{document}
答案3
如果您不使用tcolorbox
或 tikz 做其他任何事情,将其用作一个简单的框就有点过头了。我看到的是 AMS 定理类环境,其样式definition
为绿色框,旁边有垂直规则,因此我定义了一个\definition
命令来做到这一点。请注意,宏不能有段落分隔符,因此,如果您需要这样做,请定义一个新环境而不是宏。
使用该包的优点amsthm
是只需用粗体写“定义”即可,您只需删除第 7 行的星号即可获得可以通过通常的\label
--\ref
方法引用的编号定义。
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsthm}
\usepackage{lipsum}
\theoremstyle{definition}
\newtheorem*{defi}{Definition}
\def\definition#1{\par\medskip\noindent{\color{green!50!black}\vrule width 3pt}%
\colorbox{green!30!gray!15}{\parbox[c]{\dimexpr\linewidth-3pt-2\fboxsep-2\fboxrule}
{\begin{defi}#1\end{defi}}}\par\medskip}
\begin{document}
\lipsum[1][1-4]
\definition{$\gamma^5$ is defined to be the matrix given by:
\[\gamma^5=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd} \]}
\lipsum[2][1-5]
\end{document}
答案4
我使用了mdframed
而不是tcolorbox
(它们是类似的包,但tcolorbox
比 更完整mdframed
)。您可以看到您得到了相同的结果。这是我的建议,其中我使用了定理、定义、示例、特定包, amsthm
并可以创建一本书:请参阅文档的特定类\documentclass[12pt]{book}
。要增加垂直绿线的粗细,您可以更改值linewidth=2.5pt
。此示例将文本设置为斜体:
\documentclass[12pt]{book}
\usepackage{amsthm}
\usepackage{amsmath,amssymb}
\usepackage[svgnames]{xcolor}
\RequirePackage[framemethod=default]{mdframed}
\newmdenv[skipabove=7pt,
skipbelow=7pt,
rightline=false,
leftline=true,
topline=false,
bottomline=false,
linecolor=Green,
backgroundcolor=Green!10,
innerleftmargin=5pt,
innerrightmargin=5pt,
innertopmargin=2pt,
leftmargin=0cm,
rightmargin=0cm,
linewidth=2.5pt,
innerbottommargin=5pt]{dBox}
\newenvironment{definition}{\begin{dBox}\begin{definitionT}}{\end{definitionT}\end{dBox}}
\newtheorem{definitionT}{Definition}[section]
\begin{document}
\begin{definition}
$\gamma^5$ is defined to be a matrix given by:
\[\gamma^5=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd}\]
\end{definition}
\end{document}
另一段代码通过添加 将文本设置为罗马字体\theoremstyle{definition}
。请参阅此 MWE:
\documentclass[12pt]{book}
\usepackage{amsthm}
\usepackage{amsmath,amssymb}
\usepackage[svgnames]{xcolor}
\RequirePackage[framemethod=default]{mdframed}
\newmdenv[skipabove=7pt,
skipbelow=7pt,
rightline=false,
leftline=true,
topline=false,
bottomline=false,
linecolor=Green,
backgroundcolor=Green!10,
innerleftmargin=5pt,
innerrightmargin=5pt,
innertopmargin=2pt,
leftmargin=0cm,
rightmargin=0cm,
linewidth=2.5pt,
innerbottommargin=5pt]{dBox}
\theoremstyle{definition}
\newenvironment{definition}{\begin{dBox}\begin{definitionT}}{\end{definitionT}\end{dBox}}
\newtheorem{definitionT}{Definition}[section]
\begin{document}
\begin{definition}
$\gamma^5$ is defined to be a matrix given by:
\[\gamma^5=\frac{1}{24}\epsilon_{abcd}\gamma^{abcd}\]
\end{definition}
\end{document}