
Я использую среду tabularx для представления формальных аргументов, и в данный момент левая колонка выровнена с левым полем текста, а правая колонка выровнена с правым полем. Например:
Как мне выровнять левую колонку по отступу абзаца, а правую колонку — по правому полю? Я пробовал использовать пакет changepage
и \adjustwidth
команду, но это, похоже, не помогает, как и добавление \hspace{\parindent}
в разных местах. Я уверен, что есть действительно простой способ сделать это, но я не знаю как.
Вот MWE:
\documentclass[12pt]{article}
\usepackage{tabularx} %tables
\usepackage{tabulary} %tables
\usepackage{lipsum}
\usepackage{upgreek} %greek letters
\usepackage{amssymb} %modal operators
\begin{document}
\lipsum[1-2]
\begin{table}[h!]
\centering
\setlength{\extrarowheight}{3pt}
\begin{tabularx}{\textwidth}{@{}rXr@{}}
(1) & $\varnothing \vdash \pi \leftrightarrow val(\ulcorner \pi \urcorner, \ulcorner \bot \urcorner)$ & ($\pi$ def.)\\
(2) & $\pi \vdash \pi$ & (Assumption)\\
(3) & $\pi \vdash val(\ulcorner \pi \urcorner, \ulcorner \bot \urcorner)$ & (1,2, MP)\\
(4) & $\pi \vdash \bot$ & (2,3, \textit{V-Detach})\\
(5) & $\varnothing \vdash val(\ulcorner \pi \urcorner, \ulcorner \bot \urcorner)$ & (4, \textit{V-Schema})\\
(6) & $\varnothing \vdash \pi$ & (1,5, MP)\\
(7) & $\varnothing \vdash \bot$ & (5,6, \textit{V-Detach})\\
\end{tabularx}
\end{table}
\lipsum[3-4]
\end{document}
Спасибо!
решение1
Значение по умолчанию \parindent
в article
классе документа — 1.5em
. Для достижения цели форматирования достаточно изменить
\begin{tabularx}{\textwidth}{@{} rXr @{}}
к
\begin{tabularx}{\textwidth}{@{\hspace{1.5em}} rXr @{}}
Так как в целомпригодный к использованиюширина окружения tabularx
уменьшается на 1.5em
, LaTeX автоматически уменьшает ширину столбца X
на эту величину, чтобы гарантировать, что он продолжит помещаться внутри текстового блока.
Приложение: Если вы случайно не знаете значение \parindent
, вы можете выполнить, скажем,
\newlength\origparindent
\setlength{\origparindent}{\parindent}
когда-тодозапуск table
среды и замена
\begin{tabularx}{\textwidth}{@{\hspace{1.5em}} rXr @{}}
с
\begin{tabularx}{\textwidth}{@{\hspace{\origparindent}} rXr @{}}
решение2
Вам не нужно знать значение \parindent
, потому что TeX его знает.
Также вам не нужна table
окружающая среда, потому что это плавающий объект, а вам, скорее всего, понадобится материал.там, а не где-то еще.
Вы можете использовать enumerate
среду, правильно настроенную с помощью enumitem
. Сдвинуть что-либо к правому краю легко с помощью \hfill
, пока предшествующий материал допускает размещение, точнее, он не будет перекрывать метку.
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{upgreek} %greek letters
\usepackage{amssymb} %modal operators
\usepackage{enumitem}
\newenvironment{sidecond}
{\begin{enumerate}[
label=(\arabic*),
leftmargin=\dimexpr\parindent+\labelsep,
labelwidth=0pt,
align=left
]}
{\end{enumerate}}
\begin{document}
\lipsum[2][1-5]
\begin{sidecond}
\item $\varnothing \vdash \pi \leftrightarrow
\mathit{val}(\ulcorner \pi \urcorner, \ulcorner \bot \urcorner)$\hfill ($\pi$ def.)
\item $\pi \vdash \pi$\hfill (Assumption)
\item $\pi \vdash \mathit{val}(\ulcorner \pi \urcorner, \ulcorner \bot \urcorner)$\hfill (1,2, MP)
\item $\pi \vdash \bot$\hfill (2,3, \textit{V-Detach})
\item $\varnothing \vdash \mathit{val}(\ulcorner \pi \urcorner, \ulcorner \bot \urcorner)$\hfill
(4, \textit{V-Schema})
\item $\varnothing \vdash \pi$\hfill (1,5, MP)
\item $\varnothing \vdash \bot$\hfill (5,6, \textit{V-Detach})
\end{sidecond}
\lipsum[4][1-3]
\end{document}
Пара последних замечаний. Я использовал \mathit{val}
, потому что в противном случае буквы слишком разнесены (потому что они обозначают произведение трех переменных). Я оставил, \varnothing
даже если я ненавижу это за обозначение пустого множества.