Список внутри индивидуальной цитаты

Список внутри индивидуальной цитаты

Я хотел бы создать настроенную среду списка, которая работала бы как в основном тексте, так и в моей собственной цитате (в моем случае среда, которую я вызываю dialogue( list), находится внутри среды, которую я вызываю myquotation( trivlist)). Но у меня возникли проблемы с получением ожидаемых отступов. Мой рабочий пример:

\documentclass{article}
\usepackage[paperwidth=12cm,paperheight=11cm]{geometry}
\usepackage{ifthen}

% quotes
\newenvironment{myquotation}
    {\begin{trivlist}
        \ifthenelse{\isodd{1}}
                   {\setlength\leftskip{6.5mm} \setlength\rightskip{0mm}}
                   {\setlength\leftskip{0mm} \setlength\rightskip{6.5mm}}
        \setlength\itemindent{\parindent}
        \item\relax \slshape}
    {\end{trivlist}}

% dialogues
\newcommand{\entrylabel}[1]{
    \ifthenelse{\equal{}{#1}}{
        \hfill\mbox{\small{\textsc{--}}}
    }{
        \mbox{\small{\textsc{#1:}}}
    }
}
\newenvironment{dialogue}{\list{}{\renewcommand{\makelabel}{\entrylabel}
                                  \itemsep=0cm \topsep=0cm \parsep=0cm
                                  \listparindent=0em}
                         }{\endlist}

\begin{document}
Dialogue inside the quotation (unwanted indentation of the first item):
\begin{myquotation}
    \begin{dialogue}
    \item[Cookiemonster] Om, om, om...
    \item[Roadrunner] Beep, beep, beep...
    \item[Reksio] Hau, hau, hau...
    \end{dialogue}

    Some text inside the quotation following short customized dialogue.
\end{myquotation}

Dialogue inside the quotation (solution that doesn't work by flexible
vertical distances between list items):
\begin{myquotation}
    \mbox{}\vspace{-\baselineskip}
    \begin{dialogue}
    \item[Cookiemonster] Om, om, om...
    \item[Roadrunner] Beep, beep, beep...
    \item[Reksio] Hau, hau, hau...
    \end{dialogue}
\end{myquotation}

Dialogue outside the quotation:
\begin{dialogue}
\item[Cookiemonster] Om, om, om...
\item[Roadrunner] Beep, beep, beep...
\item[Reksio] Hau, hau, hau...
\end{dialogue}
\end{document}

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

Для меня самое важное — убрать отступ первого элемента внутри моей цитаты. Изначально я рассматривал включение строки \mbox{}\vspace{-\baselineskip}в определение моего списка (называемое здесь dialogue), но в случае плавающих пробелов между элементами и плавающих вертикальных пробелов вокруг списка это не работает должным образом.

Как автоматически переместить следующие элементы списка в позиции без отступа границы текста (как указано зелеными стрелками на рисунке)?

решение1

Неправильный отступ - это неправильный отступ \setlength\itemindent{\parindent}в вашем списке тривлиста. Также, если вы хотите, чтобы ваша диалоговая среда менялась в зависимости от уровня, лучше, если внешняя среда также будет списком.

Я понятия не имею, какие вертикальные пробелы вам нужны, поэтому я удалил их все. В конечном счете, лучше и проще определять такие списки с помощью пакета enumitem.

 \documentclass{article}
\usepackage[paperwidth=12cm,paperheight=11cm]{geometry}
\usepackage{ifthen}

% quotes

\newenvironment{myquotation}
    {\list{}{%
        \ifthenelse{\isodd{1}}
                   {\setlength\leftmargin{\parindent} \setlength\rightmargin{0mm}}
                   {\setlength\leftmargin{0mm} \setlength\rightmargin{6.5mm}}%
        \topsep=0cm \parsep=0cm \partopsep=0pt   \listparindent=0em
        }
        \item\relax \slshape
    }%
    {\endlist}

% dialogues
\newcommand{\entrylabel}[1]{%
    \ifthenelse{\equal{}{#1}}{%
        \hfill\mbox{\small{\textsc{--}}}%
    }{%
     \hspace\labelsep   \mbox{\small{\textsc{#1:}}}%
    }
}
\newenvironment{dialogue}{\list{}{\renewcommand{\makelabel}{\entrylabel}%
                                  \labelwidth0cm \itemindent-\leftmargin
                                  \topsep=0cm \parsep=0cm
                                  \partopsep=0pt
                                  \listparindent=0em
                                  }}{\endlist}

\begin{document}
Dialogue inside the quotation (unwanted indentation of the first item):

 \begin{myquotation}
 blblbl 
 \end{myquotation}


\begin{myquotation}
    \begin{dialogue}
    \item[Cookiemonster] Om, om, om...
    \item[Roadrunner] Beep, beep, beep...
    \item[Reksio] Hau, hau, hau...
    \item blbu
    \end{dialogue}

    Some text inside the quotation following short customized dialogue.
\end{myquotation}

Dialogue inside the quotation (solution that doesn't work by flexible
vertical distances between list items):
\begin{myquotation}
    \begin{dialogue}
    \item[Cookiemonster] Om, om, om...
    \item[Roadrunner] Beep, beep, beep...
    \item[Reksio] Hau, hau, hau...
    \end{dialogue}
\end{myquotation}

Dialogue outside the quotation:
\begin{dialogue}
\item[Cookiemonster] Om, om, om...
\item[Roadrunner] Beep, beep, beep...
\item[Reksio] Hau, hau, hau...
\end{dialogue}
\end{document}

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

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