項目を横に並べる enumerate 環境

項目を横に並べる enumerate 環境

- 上山 英二 の投稿
返信数: 4

(この投稿は問題が解決し次第削除させていただく予定です)

失礼いたします.

「緑の本」に記述のある autoalign 環境を参考にして,「項目の長さから列数を自動で計算し,その項目たちを列ごとに然るべき位置へ配置する」,いわゆる enumerate 環境の横並び版のようなものを自作いたしました(そのソースコードが autoenumi.sty です.使用例は autoenumi.tex に記載しております).

緑の本で触れられている autoalign 環境からの主な変更点は以下の通りです:

  • 実装を expl3 メインにしました.
  • 長い項目がある際に,その項目前の \item のオプション引数に noauto を指定することで,その項目だけ独立して 1 行にできるようにしました(\item[noauto] では改行もできるようにしてあります.逆にオプション引数で noauto を指定していない場合は実装の都合上改行できません).
  • \begin{autoenumi}[adjust] と書くことで,項目の並べ方をより見栄えするよう微調整できるようにしました(オプション引数を指定していない,もしくは adjust 以外の文字列をオプション引数に入れている場合はデフォルト通りの出力になります).しかしこの微調整のアルゴリズムに関しては「緑の本」でも触れられているため,変更点かと言われたら少し怪しいかもしれません.

そこで本題に入ります.

僕は自作したこちらの autoenumi パッケージの説明およびソースコード本体を Qiita 等の記事投稿サイトで公開しようと思っているのですが,その際に著作権等の問題は発生しないのでしょうか.

実装を見ていただければ分かると思うのですが,実装を expl3 メインにしており自前でオプション引数等も設定しているとはいえ,大枠のアルゴリズムや設計方針に関しては「緑の本」に記載されているものを概ねそのまま踏襲しており,それをこのまま記事投稿サイト等の多くの人の目に触れてしまうような場所で公開してしまうのは良くないのではないかと思い,質問に至った次第でございます.

本来このような場所で質問するような事でもないのですが,この件に関して有識者からの回答をお伺いできるのが TeX Forum しか無さそうであったため,こちらで質問させていただきました.

また,この autoenumi.sty について何か実装上の欠陥や改善点等がございましたら遠慮なくご指摘いただけますと幸いです(当方は TeX や LaTeX に関する知識が大変浅いため,どこかで誤った/欠陥のある実装をしてしまっている可能性が非常に高いです).

長文投稿大変失礼いたしました.

上山 英二 への返信

Re: 項目を横に並べる enumerate 環境

- 上山 英二 の投稿

\exp_args:Nne \str_if_eq:nnTF { adjust } { \@autoenumi@option }

としてる部分は単に

\str_if_eq:nVTF { adjust } { \@autoenumi@option }

とするだけで良さそうですね.

あと\def\@AE@itemsep{1\zw} としてる部分は \@AE@itemsep\zw の間違いです(別に前者でも動きますが).申し訳ございません.

上山 英二 への返信

Re: 項目を横に並べる enumerate 環境

- しっぽ 愛好家 の投稿
私自身が著作者人格権を持ち出してどうこうするということはありません.
# あれは「教科書のサンプルコード」である以上,アレンジして使われるのは
# むしろ本望です.

一方,出版契約に伴い出版社側が独占的に行使できるようになっているいくつかの権利
(「頒布権」などの出版社の仕事の領分に関する権利)があったはずですが,
契約書が手元にないため正確なことは即答できません.すみません.
# 昨年の入院およびその前後のごたごたで私物の大半が処分されてしまって……

もっとも,現在の TeX 処理系では充分に多数の \box レジスタが利用可能なので,
あのコードでやったような「\box レジスタの(レジスタ番号 255 未満の範囲の)
未割り当て領域の一時的な使用」をやる必要はないようです.
この点を変更して,
・箇条書きの各項目の保存用の \box レジスタを(恒久的に)確保
あるいは
・大きな番号のレジスタも考慮した形で「未割り当て領域」を検索・利用
するように変更すれば「まったく別物」と主張しても構わないでしょう.
# ただ,「箇条書きの各項目の保存用の \box レジスタを(恒久的に)確保」する
# 方針のほうには既製品がありそうですが……
しっぽ 愛好家 への返信

Re: 項目を横に並べる enumerate 環境

- しっぽ 愛好家 の投稿

あと,あのサンプルはあくまで「不特定多数のボックスの使用」という話でのサンプルです.
そういう「お題」を置かずにああいう環境を作成するのなら,添付のサンプルのように
「個々の項目を収めたボックスを(あの本で言うところの)『ボックスのリスト』に保存」
するようにすれば,\box レジスタをむやみに使わずに済みます.

しっぽ 愛好家 への返信

Re: 項目を横に並べる enumerate 環境

- 上山 英二 の投稿
新年明けましておめでとうございます.

ご親切にお返事をしてくださり,またご丁寧に修正版のソースコードまで提供してくださり本当にありがとうございます.
後ほどゆっくり解析してみたいと思います.

なぜかここ 1 週間の間 TeX Forum にアクセスできず,返信が遅くなってしまいました.申し訳ございません.

失礼致しました.