我正在嘗試為學生創建一個問題表,讓他們填寫元素在經歷放射性衰變後的質子和原子序數。
我已成功使用 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*環境與枚舉環境一起使用,但無濟於事。
我最近的嘗試是使用對齊的[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
包的好機會,它提供了一種將巨集應用於每個表格單元格內容的簡單方法。在這裡,我們定義了一個將s宏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}