Окружение с подтегами

Окружение с подтегами

Возможно ли создать среду, пригодную для использования таким образом...?

\begin{myEnvironment}

\{title}[This is a title]
\{year}[2016]
\{content}[Lorem ipsum dolor sit amet, consectetur adipisci elit,
sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrum exercitationem ullam corporis
suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur.]

\end{myEnvironment}

...или так...?

\begin{myEnvironment}

\{title} This is a title
\{year} 2016
\{content} Lorem ipsum dolor sit amet, consectetur adipisci elit,
sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrum exercitationem ullam corporis
suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur.

\end{myEnvironment}

...или что-то подобное?

И если я захочу, я могу пропустить поле (например title).

Вывод должен быть примерно таким (например):

  • Заголовок:Это заголовок
  • Год:2016

Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur.

решение1

Да, это возможно, и при этом синтаксис понятен пользователю.

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn

\NewDocumentEnvironment{myenv}{m} % <--- choose a better name
 {
  % process the keys
  \keys_set:nn { myenv } { #1 }
  % print them
  \par\addvspace{\topsep}
  \noindent\makebox[4em][l]{\textbullet\ \textbf{Title:}}~\l_myenv_title_tl
  \\*
  \noindent\makebox[4em][l]{\textbullet\ \textbf{Year:}}~\l_myenv_year_tl
  \\*
  \ignorespaces
 }
 {
  \par\addvspace{\topsep}
 }

% define the keys
\keys_define:nn { myenv }
 {
  title .tl_set:N = \l_myenv_title_tl,
  year  .tl_set:N = \l_myenv_year_tl,
  title .value_required:n = true,
  year  .value_required:n = true,
 }
\ExplSyntaxOff

\begin{document}

\begin{myenv}{
  title = This is a title,
  year  = 2016,
}
Lorem ipsum dolor sit amet, consectetur adipisci elit, 
sed eiusmod tempor incidunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrum exercitationem
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea
commodi consequatur.
\end{myenv}

\end{document}

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

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