Составление списка цитат

Составление списка цитат

У меня есть случай использования, в котором мне нужно перечислить все встроенные цитаты, использованные в статье журналистского типа в конце вместе с указанием источника. Что-то вроде:

НАЧАТЬ ПРИМЕР Текст текст текст «это цитата», сказал person1. Текст текст текст «а это еще одна», по словам person2. ...

Список цитат:

"это цитата" Персона1, Должность, Организация

"и это еще один" Person2, Title, Organization

КОНЕЦ ПРИМЕРА

Я совсем новичок в Latex и не совсем понимаю, какой подход лучше. Я сделал быструю ошибку, пытаясь заставить tocloft работать с одной из команд csquote (\textquote), основываясь на примерах, которые я нашел в сети. Это осуществимый подход или есть другие рекомендуемые подходы, которые были бы более разумными?

заранее спасибо

решение1

Я думаю, было бы лучше подойти к проблеме в стиле, похожем на цитирование. Сначала определите набор цитат (точно так же, как вы определяете набор цитат в файле .bib), а затем используйте те, которые вам нужны, в документе.

Вот пример использованияglossariespackage. Кавычки определяются с помощью пользовательской \newquoteкоманды, которую предоставляет этот пример. Чтобы упростить пример, я просто поместил их в преамбулу, но если у вас их много, проще поместить их в отдельный .texфайл (называемый, скажем, quotes.tex) и затем загрузить этот файл с помощью \loadglsentries{quotes}.

\documentclass{article}

\usepackage{csquotes}
\usepackage{glossaries}

\makenoidxglossaries

% \newquote[options]{label}{name}{quote}{title}{organisation}
\newcommand*{\newquote}[6][]{%
 \newglossaryentry{#2}{name={#3},description={#4},%
    user1={#5},user2={#6},#1}%
}

% \usequote{label}{said}
\newcommand*{\usequote}[2]{\enquote{\glsdesc{#1},} #2 \glstext{#1}}

% Convert the first letter of the quote to upper case:
\newcommand*{\Usequote}[2]{\enquote{\Glsdesc{#1},} #2 \glstext{#1}}

\newglossarystyle{quotes}{%
  \setglossarystyle{index}%
  \renewcommand*{\glossentry}[2]{%
    \item\glsentryitem{##1}\glstarget{##1}{\enquote{\Glossentrydesc{##1}}}
    \glossentryname{##1}, \glsentryuseri{##1}, \glsentryuserii{##1}%
  }%
}
\newcommand*{\printquotes}[1][]{%
 \printnoidxglossary[sort=use,nogroupskip,style=quotes,%
   title={List of Quotes},#1]%
}

\newquote{smith1}{John Smith}{this is a quote}{President}{Smith \& co}
\newquote{doe1}{Jane Doe}{and this is another}{Galactic Ruler}{The Empire}
\newquote{smith2}{John Smith}{we retract our earlier statement}{President}{Smith \& co}

\begin{document}
Text text text \usequote{smith1}{said}.
Text text text \usequote{doe1}{according to}.
\Usequote{smith2}{said}.

\printquotes
\end{document}

Как и в случае с оглавлениями, перекрестными ссылками и т. д., для обеспечения актуальности документа требуется два запуска. Я предполагаю, что вы хотите, чтобы цитаты были перечислены в соответствии с порядком использования в документе. Я использовал \enquoteвместо \textquoteдля простоты, но вы можете адаптировать его по мере необходимости.

Итоговый документ выглядит так:

изображение документа

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