我正在尝试为学生创建一张问卷,让他们填写元素经历放射性衰变后的质子和原子序数。
我已成功使用 mhchem 环境和 tikz 生成以下工作表:
使用以下代码:
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage{tikz}
\usepackage[version=4]{mhchem}
\newcommand\isotope{
\begin{tikzpicture}[scale=0.5, baseline=-4pt]
\draw (0,0.1) rectangle (1.5,1.1)
(0,-0.1) rectangle (1.5,-1.1)
(1.7,-1.1) rectangle (3.8,1.1);
\end{tikzpicture}}
\begin{document}
\begin{enumerate}
\begin{huge}
\item $\!\begin{aligned}[t]
\ce{^213_90Th -> ^4_2\alpha{} + & \isotope} \\
\end{aligned}$
\item $\begin{aligned}[t]
\ce{^194_86Rn -> ^4_2\alpha{} + & \isotope} \\
\end{aligned}$
\item $\begin{aligned}[t]
\ce{^217_91Pa -> ^4_2\alpha{} + & \isotope} \\
\end{aligned}$
\item $\begin{aligned}[t]
\ce{^221_90Th -> ^4_2\alpha{} + & \isotope}
\end{aligned}$
\end{huge}
\end{enumerate}
\end{document}
但是,请注意这些盒子彼此并不对齐,这让我抓狂。
我曾尝试将 align* 环境与 enumerate 环境一起使用,但没有成功。
我最近的尝试是使用 aligned[t] 环境,但正如您所看到的,这并没有解决问题。
有什么想法可以修复此问题吗?
答案1
更新后的答案,没有自动同位素:
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage{tikz}
\usepackage[version=4]{mhchem}
\newcommand\isotope{
\medskip\par
\begin{tikzpicture}[scale=0.5, baseline=-4pt]
\draw (0,0.1) rectangle (1.5,1.1)
(0,-0.1) rectangle (1.5,-1.1)
(1.7,-1.1) rectangle (3.8,1.1);
\end{tikzpicture}}
\usepackage{array}
\newcounter{rows}
\newcolumntype{C}{>{\stepcounter{rows}}l<{\arabic{rows}.}}
\newcolumntype{A}{c<{\ce{->}}}
\setlength{\tabcolsep}{4pt}
\begin{document}
\begin{tabular}{ClAll}
& \ce{^213_90Th} & & \ce{^4_2\alpha{}} & + \isotope \\
& \ce{^194_86Rn} & & \ce{^4_2\alpha{}} & + \isotope \\
\end{tabular}
\end{document}
这给出
说明:我们使用 atabular
而不是 anenumerate
来实现对齐。计数器由特殊的列类型生成C
,它增强了计数器并排版值;在表格中,您无需填写任何内容。我们对反应箭头使用了类似的技巧;它由自定义A
列类型提供,因此您所要做的就是插入一个空的表格单元格。
提出的问题也是展示 Martin Scharrercollcell
软件包的好机会,该软件包提供了一种将宏应用于每个表格单元格内容的简单方法。在这里,我们定义一个将宏E
应用于每个单元格的列类型。此外,我们创建另一个使用自定义宏填充每个单元格的列类型:mhchem
\ce
I
\isotope
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage{tikz}
\usepackage[version=4]{mhchem}
\usepackage{collcell}
\newcommand\isotope{
\medskip\par
\begin{tikzpicture}[scale=0.5, baseline=-4pt]
\draw (0,0.1) rectangle (1.5,1.1)
(0,-0.1) rectangle (1.5,-1.1)
(1.7,-1.1) rectangle (3.8,1.1);
\end{tikzpicture}}
\usepackage{array}
\newcounter{rows}
\newcolumntype{C}{>{\stepcounter{rows}}l<{\arabic{rows}.}}
\newcolumntype{A}{c<{\ce{->}}}
\newcolumntype{I}{l<{+ \isotope}}
\newcolumntype{E}{>{\collectcell\ce}l<{\endcollectcell}}
\setlength{\tabcolsep}{4pt}
\begin{document}
\begin{tabular}{CEAEI}
& ^213_90Th & & ^4_2\alpha & \\
& ^194_86Rn & & ^4_2\alpha & \\
\end{tabular}
\end{document}
输出与上面显示的完全相同。
答案2
我建议用一揽子listliketab
计划来代替实际清单。这些“项目”可以相互参考。
我还定义了一个\myisotope
命令,它不需要tikz
,而只是依赖于hhline
:
\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage{tikz}
\usepackage[version=4]{mhchem}
\usepackage{array, hhline, enumitem, listliketab}
\newcommand\isotope{%
\begin{tikzpicture}[scale=0.5, baseline=-4pt]
\draw (0,0.1) rectangle (1.5,1.1)
(0,-0.1) rectangle (1.5,-1.1)
(1.7,-1.1) rectangle (3.8,1.1);
\end{tikzpicture}}
\newcommand\myisotope{\renewcommand{\arraystretch}{0.6}\setlength\extrarowheight{12pt}\begin{tabular}{|p{10pt}||p{18pt}|}\hhline{-||-}& \\\hhline{:=:|~|} & \\\hhline{|-||-|}\end{tabular}}%&
\begin{document}
\storestyleof{enumerate}
\begin{listliketab}
\newcounter{tabenum}\setcounter{tabenum}{0}
\newcommand{\tabitem}{\refstepcounter{tabenum}\thetabenum.}
\begin{tabular}{Lr@{}l}
\tabitem\label{th} & \ce{^213_90Th -> ^4_2\alpha{} +} & \myisotope\\[20pt]
\tabitem & \ce{^194_86Rn -> ^4_2\alpha{} +} & \myisotope\\[20pt]
\tabitem & \ce{^217_91Pa -> ^4_2\alpha{} +} & \myisotope \\[20pt]
\tabitem & \ce{^221_90Th -> ^4_2\alpha{} +} & \myisotope
\end{tabular}
\end{listliketab}
Reaction \ref{th}
\end{document}