サブタグ付き環境

サブタグ付き環境

こんな風に使える環境を作ることは可能なのでしょうか…?

\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。我々は最低限の努力を惜しまず、体を動かし、その結果、商品から液体が出てくるのです。

答え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}

ここに画像の説明を入力してください

関連情報