我希望在数学/逻辑推理中将理由左对齐。我目前处于一个enumerate
标签中。
我有:
a) p or q by fact(10)
b) r by negation on (a, 10)
c) s by implication(b, 5)
.
.
I would like to turn the above into:
a) p or q by fact(10)
b) r by negation on (a, 10)
c) s by implication (b, 5)
.
.
我会知道如何做到这一点,而无需枚举页面左侧的字母表。我只需使用标签即可align
。
- 如何在枚举中获取上述对齐?
提前致谢!
答案1
如果您知道句子相对较短,则可以使用tabbing
环境和计数器。
\documentclass{article}
\newcounter{mycurrentline}
\def\postNumberForLine{\stepcounter{mycurrentline}\alph{mycurrentline})}
\pagestyle{empty}
\begin{document}
\begin{tabbing}
\postNumberForLine\ \= p or q \= by fact (10) \\
\postNumberForLine \> r \> by negation on (a, 10)\\
\postNumberForLine \> s \> by implicaiton (b,5)
\end{tabbing}
\end{document}
或者,您可以使用tabular
环境:
\documentclass{article}
\usepackage{array}
\newcounter{mycurrentline}
\def\postNumberForLine{\stepcounter{mycurrentline}\alph{mycurrentline})}
\pagestyle{empty}
\begin{document}
\begin{tabular}{>{\postNumberForLine}ccl}
& p or q & by fact (10) \\
& r & by negation on (a, 10)\\
& s & by implicaiton (b,5)
\end{tabular}
\end{document}
环境的优点在于tabular
,您可以对最后一列使用列指令,p{<dim>}
使其具有minipage
指定的宽度。
对于这个特定的tabular
环境,我将第一列和第二列都居中。最后一列左对齐。此外,我加载了包array
。这允许我为表格的每一行添加(或后添加)指令:这是通过添加来实现的>{<commands}
。我还在列声明\raggedright
中添加了前缀p
以避免连字符。
这是一个略有不同的例子来说明这个p
选项:
\documentclass{article}
\usepackage{amsmath,array}
\newcounter{mycurrentline}
\def\postNumberForLine{\stepcounter{mycurrentline}\alph{mycurrentline})}
\pagestyle{empty}
\begin{document}
\begin{tabular}{>{\postNumberForLine}c>{$}c<{$}>{\raggedright}p{2in}r}
& p \text{ or } q & This is the disjunction of proposition $p$ and proposition $q$ & by fact (10) \\
& r & & by negation on (a, 10)\\
& s & & by implicaiton (b,5)
\end{tabular}
\end{document}
我已经完成了指令的前置和后置。对于第二列,我已确保内容处于数学模式。此外,我已加载包,amsmath
以便我在数学模式中间添加\text{ and }
以正确格式化。and
如果您的表格可能必须跨越页面边界,那么您可能还需要考虑该longtable
包。
答案2
不那么完美listliketab
包裹。
也可以看看我的这个答案到如何在枚举环境中强制对齐“案例”括号?
代码
\documentclass[12pt]{scrartcl}
\usepackage{enumitem,amsmath}
\usepackage{listliketab}
\newcounter{listliketablabel}
\newcommand*{\nextnum}{\addtocounter{listliketablabel}{1}\thelistliketablabel)}
\makeatletter
\newcommand*{\storestyleofextra}[2][]{%
\begin{lrbox}{\llt@list@box}
\noindent
\begin{minipage}{\linewidth}
\begin{#2}[#1]
\item[] %\storeliststyle{}
\end{#2} \storeliststyle{}%\edef\llt@bot@sep@{\the\llt@bot@sep}
% \begin{#2}[#1]
% \item[] %\storeliststyle{}\global\llt@bot@sep\llt@bot@sep@
% \end{#2}
\end{minipage}
\end{lrbox}\ignorespacesafterend
}
\storestyleofextra[label=\alph*)]{enumerate}
\newenvironment{alignerate}[1]{%
\begin{listliketab}%
\setcounter{listliketablabel}{0}\renewcommand*{\thelistliketablabel}{\alph{listliketablabel}}%
\renewcommand*{\item}{\nextnum &}%
\begin{tabular}{L#1R}
}{
\end{tabular}
\end{listliketab}\hfill\newline
}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{alignerate}{>{$}c<{$} >{\raggedright} p{2in} r}
\item p \text{ or } q & This is the disjunction of proposition $p$ and proposition $q$ & by fact (10) \\
\item r & & by negation on (a, 10) \\
\item s & & by implicaiton (b,5) \\
\end{alignerate}
\lipsum[2]
\begin{enumerate}[label=\alph*)]
\item $p$ or $q$
\item $r$
\item $s$
\end{enumerate}
\lipsum[3]
\end{document}