Удаление полупустой строки и точный расчет пробела

Удаление полупустой строки и точный расчет пробела

Рассмотрим следующий MWE:

Some text, Some text, Some text, Some text, Some text, Some text,
Some text, Some text, Some text, Some text, Some text, Some text
\begin{enumerate}
\item This is a line \mbox{\parbox[t][][t]{\textwidth-\widthof{MMMx This is a line}}{

\begin{enumerate}[label=\textit{(\roman{enumii})}]
\item  Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 
\item Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 
\end{enumerate}

}}\end{enumerate}

У меня есть два вопроса:

1) Я бы хотел, чтобы "(i) Текст 1 Текст 1 Текст 1 Текст 1 Текст 1 Текст 1 Текст 1" отображался на той же строке, что и "Это строка". Как это сделать?

2) Я бы хотел, чтобы интервал между последним словом "This is a line", т. е. "line", и первым словом "(i) Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1", т. е. "Text", был обычным пробелом. Поскольку "This is a line" уже имеет отступ, я попытался учесть этот отступ, добавив "MMMx" в качестве дополнительного интервала в \widthof. Но это всего лишь глазомер. Как мне сделать это точнее?

решение1

Не нужно гадать; используйте minipageвместо \parboxи удалите \mbox:

\documentclass{article}
\usepackage{enumitem,calc}
\begin{document}
Some text, Some text, Some text, Some text, Some text, Some text,
Some text, Some text, Some text, Some text, Some text, Some text
\begin{enumerate}
\item This is a line
  \begin{minipage}[t]{\textwidth-\labelwidth-\labelsep-\widthof{This is a line}}
  \begin{enumerate}[label=(\textit{\roman*})]
  \item Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1
  \item Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 1 Text 1 Text 1 Text 1 Text 1
  \end{enumerate}
  \end{minipage}
\end{enumerate}
\end{document}

введите описание изображения здесь

Лучшее определение, допускающее вложение на каждом уровне; но имейте в виду, что вложение нескольких перечислений — плохой стиль.

\documentclass{article}
\usepackage{showframe} % just for showing the page margins
\usepackage{enumitem,calc}

\newenvironment{xenumerate}[1]
 {\begin{minipage}[t]{\linewidth-\widthof{#1}}
  \begin{enumerate}[label=(\textit{\roman*})]}
 {\end{enumerate}\end{minipage}}

\begin{document}
Some text, Some text, Some text, Some text, Some text, Some text,
Some text, Some text, Some text, Some text, Some text, Some text
\begin{enumerate}
\item This is a line 
  \begin{xenumerate}{This is a line}
  \item Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1
  \item Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 1 Text 1 Text 1 Text 1 Text 1
  \end{xenumerate}
\item Text text text text text text
  \begin{enumerate}
  \item Text Text Text Text
    \begin{xenumerate}{Text Text Text Text}
    \item Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1
    \item Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 1 Text 1 Text 1 Text 1 Text 1
    \end{xenumerate}
  \item End of the story
  \end{enumerate}  
\end{enumerate}
\end{document}

введите описание изображения здесь

Версия с необязательным аргументом для изменения метки

Метка по умолчанию label=(\textit{\roman*})та же, но вы можете изменить ее по своему усмотрению.

\documentclass{article}
\usepackage{showframe}
\usepackage{enumitem,calc}

\newenvironment{xenumerate}[2][label=(\textit{\roman*})]
 {\begin{minipage}[t]{\linewidth-\widthof{#2}}
  \begin{enumerate}[#1]}
 {\end{enumerate}\end{minipage}}

\begin{document}
Some text, Some text, Some text, Some text, Some text, Some text,
Some text, Some text, Some text, Some text, Some text, Some text
\begin{enumerate}
\item This is a line 
  \begin{xenumerate}{This is a line}
  \item Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1
  \item Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 1 Text 1 Text 1 Text 1 Text 1
  \end{xenumerate}
\item Text text text text text text
  \begin{enumerate}
  \item Text Text Text Text
    \begin{xenumerate}[label=(\arabic*)]{Text Text Text Text}
    \item Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1 Text 1
    \item Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 2 Text 1 Text 1 Text 1 Text 1 Text 1
    \end{xenumerate}
  \item End of the story
  \end{enumerate}  
\end{enumerate}
\end{document}

введите описание изображения здесь

Связанный контент