我对 LaTeX 或 TeX 总体来说还是一个初学者。
我使用 Tex Studio 编写任何 LaTeX 文档。
我正在编写一个需要许多表格的文档,所有表格都基于同一个模板,考虑复制和粘贴不同的内容。
在互联网上寻找重用表格代码的方法,似乎命令和环境就是我所需要的。即使我还没有研究过 LaTeX 的实际工作原理,我或多或少知道如何使用 booktabs 和 tabularx 从头开始制作表格。我们可以说,我仍然处于脚本小子状态,即使我试图找出为什么某些代码以某种方式工作,而以另一种方式不工作。
我的环境:
Windows 10 x64 2004
TeXstudio 2.12.22 (git 2.12.22)
Using Qt Version 5.12.1, compiled with Qt 5.12.1 R
PDFLATEX: pdflatex.exe -version
MiKTeX-pdfTeX 4.0.1 (MiKTeX 20.6.29)
这是我做的:
\newcounter{usecase}
\newenvironment{usecase}[1]%
{%
\stepcounter{usecase}%
\tabularx{\linewidth}{lX} \toprule%
\textbf{\#\arabic{usecase}} & \textbf{#1}\\ \midrule
}
{\bottomrule%
\endtabularx}%
\newcommand{\desc}[1]{\textbf{Description} & {#1}\\ \midrule}
\newcommand{\precond}[1]{\textbf{Preconditions} & {#1}\\}
\newcommand{\postcond}[1]{\textbf{Postconditions} & {#1}\\ \midrule}
\newcommand{\basicpath}[1]{\textbf{Basic Path} & {#1}\\}
\newcommand{\altpath}[1]{\textbf{Alternate Path} & {#1}\\}
\newcommand{\expath}[1]{\textbf{Exception Path} & {#1}\\}
但它会引发多个错误,即使它们是相同的:
Misplaced \noalign. \end{usecase}
这就是我想要实现的目标:
\begin{usecase}{Title}
\desc{Very long desc with \textbf{formatting} but no environments}
\precond{Pre condition text with
\begin{itemize}
\item One item
\item Two item
\end{itemize}
} % precond
\postcond{test} % like precond, just skipping
\basicpath{test} % like precond, just skipping
\altpath{test} % like precond, just skipping
\expath{test} % like precond, just skipping
\end{usecase}
实际的表格将是这样的:
\begin{table}[h!]
\centering
\begin{tabularx}{\textwidth}{lX} \toprule
\textbf{\#1} & \textbf{Title of The Use Case}\\ \midrule
\textbf{Description} &%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi aliquam, metus a finibus efficitur, tortor enim consequat arcu, nec congue.
\\% description text
\midrule
\textbf{Preconditions} & Precondition text\\
\textbf{Postconditions} & Postconditions text\\ \midrule
\textbf{Basic Path} & User does this and this:
\begin{itemize}
\item Step 1
\item Step 2
\item Step 3
\item Step 4
\item Step 5
\end{itemize}\\
\textbf{Alternate Path} & Alternate Path (optional)\\
\textbf{Exception Path} & Exception Path (optional)\\
\bottomrule
\end{tabularx}
\end{table}
附言
由于这是预览,所以表格渲染得并不完美。如果我在 Adobe Reader 上打开它,它就完美了。
答案1
罪魁祸首是“隐藏的”,老实说,我难以想象:
\usepackage{datetime2}
如果没有此包,文档编译也不会出现问题。
tabularx
有趣的是,如果您使用这样的环境,它不会产生问题:
\begin{tabularx}{<width>}{<cols>}
\end{tabularx}
\newenvironment
但是如果你在tabularx 宏中使用它,它就会:
\newenvironment{env}
{\tabularx{<width>}{<cols>}}
{\endtabularx}
\begin{env}
\end{env} % Error: Misplaced \noalign.