自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

よくわかっていないツールと言語でよくわかっていないマークアップのCustom Writerをやっていく

この記事は

EWB アドベントカレンダー2019の21日目の記事です。

adventar.org

Pandocアドベントカレンダー2019の21日目の記事です。

https://adventar.org/calendars/4338

20日目は某ZR(ざんねん🙃) (@zr_tex8r) | Twitterさんで https://zrbabbler.hatenablog.com/entry/2019/12/04/234053でした。

最初に書いておくと完成してません。 明日夜だと思っていたタスクが朝締切だったりするなど、師走を実感しますね。

前置き

さて、EWBの情報を色々と集めてきたわけですが、

www.slideshare.net

「reSTをEWBに!」「いいですとも!」

ということで、他の軽量マークアップ形式からEWBにして作成された書籍がありました。残念ながら変換処理については出版社内部で行われたようで詳細は分かりませんが、DocutilsはreST以外のReader、\LaTeX{}やHTML以外のWriterを独自に作ることもできるので、この辺りを活用するとちょっと楽そうですね。楽だとは言っていませんが。

そんな感じに記事のネタを探していたワケですが、うっかり21日にPandocアドベントカレンダーの登録をしていたことを思い出しました。

そういえば鹿野さんの記事でPandocとDocutilsの相似について言及されていました。

golden-lucky.hatenablog.com

ヨシ!

EWBの記法おさらい

EWB文書本体のマークアップには 「組版トリガ」と「編集トリガ」 があります。このうち「組版トリガ」は書籍上の見た目に関わるものなので、今回Pandocで変換元とするMarkdownからは考えなくとも良さそうです。

編集トリガの基本文法は以下のようになります。実はブロックかインラインかは記法上は区別がなく、各トリガそれぞれで異なり、なんだったら書き換えられます。

//<文字列>{ ...//<文字列>}...

見出しなどは開始タグ閉じタグがつきません。

//i 見出し

リストの基本は以下のようになります。

///k1{
<記号> <文字列>
<記号> <文字列>
//k1}

テーブルはシンプルな構造であれば タブ文字区切りで似たことをやればよいので、基本は大体これでいける気がしてきました。

今回はこれらの基本的なところに絞り、 Custom Writerに挑戦してみます。

みりあやんないよ

  • EWBでは改行が反映されますが、今回は正しく処理できるかは考慮しないものとします。一応SoftBreak設定してやれば動くハズ?
  • EWBで使える文字種はJIS全角範囲とされています。EWBで処理時にエラーを吐いてくれるはずなので今回はスルーします。

Pandoc Custom Writer

Pandocアドベントカレンダー2019にはReaderの記事がありますが、

golden-lucky.hatenablog.com

Writerは既にPandocに渡っている構造の出力を弄るだけなのでより簡単、な筈、です。

カスタムライターを作るために、先ずはLuaにおける出力例の一覧を取得します*1

これを書き換えていきます。

例えば

-- sample.lua
function Emph(s)
  return "<em>" .. s .. "</em>"
end

-- ewbfilter.lua
function Emph(s)
  return "//g{" .. s .. "//g}"
end

になる、といった感じですね。実際のEWBでは 文字エンコーディングSJISEUC-JPになりますが、そんなんは後で変換かければええ。

エスケープ

さて、出力毎に調整が必要な機能として エスケープがあります。

(Pandoc)Markdownでは問題の無かった表現がEWBではNG、というものですね。

EWBのトリガは先頭に//があるので、ここから3種くらいの区切りまでがトリガとされます。//がきたら特別な場合を除き ////に直してやる必要があります。

/**hoge**といった並びのとき、素朴な置換をすると///g{hoge//g}となりますが、ここはEWB(ハンドブック)を信じてそのままに。

また、今回扱わないといった組版トリガも Markdown文中に表われるのはけしからんのでエスケープします。@@@@@@にします。

改行

function SoftBreak()
  return "\n"
end

function LineBreak()
  return "\n"
end

箇条書き

BulletList

ある意味単純ですね。ネストも問題無いハズ。 項目先頭の記号はとりあえずでハードコーディング。

function BulletList(items)
  local buf = {}
    for _, items in pairs(items) do
      table.insert(buf, "・ //|" .. item .. "\n")
    end

  return "//k1{{" ..table.concat(buf, "\n") .. "\n//k1}"
end
OrderedList

先程よりちょっと厄介なのは、\LaTeX{}やHTMLと違って自動インクリメントされるマークアップではないので、 数字をこちらで回すこと。まあそれだけのハズ。

function OrderedList(items)
  local buf = {}
    for i, item in pairs(items) do
      table.insert(buf, i .. ".//| " .. item .. "\n")
    end

  return "//k2{{" .. table.concat(buf, "\n") .. "\n//k2}}"
end

DefinitionList

まあ箇条書きのグループとしてみれば、やることは大体同じでしょう。

function DefinitionList(items)
  local buffer = {}
  for _, item in pairs(items) do
    for k, v in pairs(item) do
      table.insert(buf, k .. " //| ".. v .."\n")
    end
  end
  return "//k3{" .. table.concat(buf, "\n") .. "//k3}"
end

コードブロック

元のサンプルだとエスケープ処理挟んでたんですが、 アトリビュートはまあオプション引数に影響するにしても トリガ定義側でなんとかする奴なので今回は飛ばします。

ただ、コードブロック内部のコメントは特殊な処理をしてコメントであることを明示するようにしなければなりません。 えっアイデアが浮かばない。とりあえず空のローカル関数を定義して濁します。

function CodeBlock(s, attr)
  local cmt_parse = comment_perse(s)
  return "//list1{\n" .. cmt_perse .."\n//list1}"
end

local function comment_parse(s)
  return s
end

水平線

function HorizontalRule()
    return "//kei\n"
end

Caption付き図表

EWBでは、基本的には図表を文書中では扱いません。テーブル などは記述可能ですが、文書中には基本的にユニークな番号とキャプションの文字列だけです。実際に図表リストを別に作成するのは処理が複雑化するのでスルーします。 ユニークな番号に関しては数字以外でもいいはずですが、面倒なので数字ということにしましょう。実装も手を抜いて 使用直前にインクリメントでいきましょう。

local fignum = 0

function CaptionedImage(src, tit, caption, attr)
  fignum = fignum + 1
  return '//f'.. fignum  .. " " .. caption .. "\n"
end

Table

EWBのテーブルはそれなりに複雑な図表も可能ですが、シンプルテーブルの入力を仮定します。 寄せの指定は簡単ですが、カラム幅の文字数指定って互換ありそうでないんですよね。今回はやりません。

function Table(caption, aligns, widths, headers, rows)
  local buf = {}
  local function add(s)
    table.insert(buf, s)
  end

  add("//table1")
  for _, align_raw in pairs(align) do
    local align = ewb_align(align_raw)
    add("[" .. align .. "]")  
  end
  add("{\n")
  local header_row = {}
  local empty_header = true
  
  for i, h in pairs(headers) do
    empty_header = empty_header and h = ""
  end
  if empty_header then
  head = ""
  else
    add("//g{")
    for _, h in pairs(header_row) do
      add(h .. "\t")
    end
    add("//g}\n")

    for _, row in pairs(rows) do
      for i, c in pairs(row) do
        add(c .. "\t")
      end
      add("\n")
    end
  end
    add("//table1}")
    return table.concat(buf,'\n')
end

未完

とりあえずlocalでないsample.luaに出てくる関数を全部埋めれば完成するハズ。 SpanDevも、本格的に変換を作るなら編集トリガと対応を作るべきなんだろうなあ。

というワケで、Readerでの難しい話が嘘のようにWriterの出力を弄るのは楽かもしれないという結びです*2

明日の枠も空いてるみたいですが、明日はSphinxをやっている予定なのでこの続きで埋めるとかはないです。

動いているEWBを見るの巻

この記事はEWBアドベントカレンダー2019の20日目の記事です。

adventar.org

作成済みVMイメージの起動

以前の記事を読むと、最新FreeBSD環境でのEWB関連パッケージ展開に失敗してる有様が分かるかと思います。やりようはあるのかもしれませんが、とりあえずモチベは高くなかったので、例のDVDについてきたFreeBSD+EWB.vmdkのイメージをVirtual Boxで起動することに。ううっ。

まあ使うと決めたら難しいことはないんで、やるだけ。

やっていき

f:id:hidden_alma:20191220181207p:plain
VM起動。EWBアリ

さっそくsampleディレクトリのファイルを触ってみます。 $ xemacsで、おお、xemacs君が。適当にsample.ewbを開いてみると。

f:id:hidden_alma:20191220181534p:plain
xemacs sample.ewb

あっ文字コードが。

$ echo $LANG

をするとja_JP.EUCの表示。ターミナルはEUC-JPと。ではこのファイルはSJISとかかな。

$ nkf --guess sample.ewb

出ません。そう、思い出してください。当時のnkfのバージョンは…… 1.9! UTF-8なんかは知らない子扱いですよ。ちょっと扱いづらすぎますね。

とりあえずEWBが置いてある場所を見てみます。最新環境で入れてみることを諦めたわけではないですからね。

f:id:hidden_alma:20191220182329p:plain
EWBが実際に置いてあった場所

サーバのCUI探索気分はこのへんで。

「こんな不便な環境にいられるか! 俺はホスト環境に戻らせてもらう!」

というワケで、EWBをこのVM牧場で飼うことができました。 コンパイルやツールを試す予定だったんですが、集中が切れたので。

Next

明日Pandocアドベントカレンダーの担当だったんですがどうしましょう。 EWBアドベントカレンダーも担当ですね。 そうだ! PandocでEWBを出力しよう!(?)

:thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face::thinking_face:

次回! ひだるま死す! デュエルスタンバイ!

Perl to Goしようと思ったら結構既出だった

この記事はEWB アドベントカレンダー2019の19日目の記事です。

adventar.org

この一連の記事の最終的な目標は現代のTeXLive環境で動作するEWBを Invent*1することだというのは初めて書く気もします。アドベントカレンダー中には終わりませんが、長期的にはできるといいな。

さて、EWBを構成するツールはどれもこれもJavaかEmacsLispだと思っていたら、 そこそこPerlスクリプトがあることが過去の記事で判明したワケです。 Perl5が動かない現代的環境はほぼ無いので、これらはそのまま持ってきても 大体の環境で動作してくれるはずです。でも、気軽に達成感が得られそうな手段を放置するのはなんかアレだし、モチベーションアップのために手作業のあたたかみのある車輪を手に入れたい。

一般的な話として、「かつてPerlで書き捨てたスクリプトをGoに直したい」欲求は 多いようで、様々な記事が見つかります*2。例えば

qiita.com

のような。

あと19日が1時間もない状態でこの記事を書きはじめたので、ザッと見ていきましょう。

gettoc

github.com

サルベージしたスクリプト群からgettocの登場です。 読みこむewbファイルを登録したファイルを元に、Table of Contentsを作るという目的のツールですね。\LaTeX{}も読み込んだファイルの見出しからtocを生成してくれますが、 こちらはいつ使うんだ、という。各トリガなどの読み込みをしてEWBファイルとしての目次を出力します。\tableofcontentstexの処理になると、\TeX{}nitianの仕事になってしまうので、この独自tocを使っていくようです。

方針としては

  • init処理 -> os/flagでやればよさそう
  • トリガリスト取得 -> 読み込んだファイル中のトリガをstringのリストにする
  • ファイル処理 -> メモリ容量を超越する超巨大ファイルは後で考えるとしてとりあえずio/utilかな
  • 見出し文字列をファイルから取得 -> 一先ずreadLine()あたりで良さそう。少なくとも見出しは行頭スタートで見出しになる程度の文字数しかないと仮定すれば。
  • 出力用ハードコード文字列 -> text/templateで別にした方が取り回しがいい?

といった感じですね。その後で元にないお節介機能を加えるなら、巨大ファイル対策、並列化、パスのOS間差異吸収あたりでしょうか。

Next

やっていきをしたいんですが、1日は24時間しかない。 尻切れトンボな25日目にならないようにはしたい。したいが。

*1:1. 発明する 2. でっち上げる

*2:CUIツールが作りやすいことなどが関連しているのでしょうか。

技術書典7で頒布した同人誌の公開

この記事は\TeX{}\LaTeX{}アドベントカレンダー2019の19日目の記事です。

adventar.org

18日は Xs (@qp_mzzt) | Twitter さんの LaTeXで目次のカスタマイズをしてみた - Qiita でした。

間に合わなかったよ……

本来であれば本日は技術書典7にて頒布した「LuaLaTeX微文書作成入門」の改稿版を公開する予定となっておりましたが、 別の某アドベントカレンダーやら様々にバタバタしておりましたところ、嘘です、忙しさにかまけて自分の書いた文書から 目を逸らし改稿が遅々として進まなかったところ、この日を迎えてしまいました。本日は頒布した内容をそのまま公開させて いただきます。

何の本だったか

  • LuaLaTeX入門本を目指すもの
  • LaTeX入門書を読んでいる前提
  • LuaLaTeX向けクラスファイルの紹介
  • フォント設定
  • tcolorboxでlistingができる
  • TikZで図以外ができるよ
  • ビルドツール紹介
  • 分割ビルドとパッケージ
  • LaTeXWebサービス紹介

既知の要訂正箇所(2019年12月19日公開版では直っていません。改稿後直る箇所です。)

では、どうぞ

https://drive.google.com/file/d/19OQTORvLstkHt82yQ5woZ4O_Bf5Zav0X/view?usp=sharing

今後の更新

リファクタリングと一通りの更新が終わったらGitHubにてソースを含めた公開を行います。その際現在の旧版はアクセスできなくなる予定です。

ついでなので、改題し新表紙になる予定です。

明日のTeXLaTeXアドベントカレンダー

20日目はえぬぬぬぬぬぬぬぬん (@enukasu) | Twitterさんです。

投稿とアドベントカレンダーに関する訂正

この記事は EWBアドベントカレンダー2019の18日目の記事です。

adventar.org

おわび

過去「EWBについて扱った書籍が1冊くらいしかない。しかもアスキー社からは出てない」旨の発言を何度かしておりましたが、訂正いたします。

www.d-sys.co.jp

www.d-sys.co.jp

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1989年に刊行されておりました書籍がEWBを扱ったものであるようです。

1989年となるとかなり素朴な1系についてのものでしょうか。積極的に探してみようと思います。

簡易マークアップテーブル記法まとめ

この記事はEWBアドベントカレンダー2019の17日目の記事ということになりました。

adventar.org

20191217 20時30追記:Textileの複雑な表を追記。Textile、はてな記法の参考ページを追加 20191217 21時追記: CAS-UB記法の表と参考ページ追加。シンプルなテーブルでそれぞれのコードから得られる表が大体同じになるようにした

Caution

対象言語は大体wikipediaの軽量マークアップ言語のページから。

テーブルヘッダ = TH テーブルデータ = TD

必ずしも記法フル対応では載せていない。 それぞれ同じ出力を得るテーブルを書くのは思った以上に面倒そうなのでやっていない。はてなのWebエディタで書き始めるんじゃなかった。

シンプルなテーブル

Markdown(PHP Extra)

  • テーブル(セル)内改行は<br>で実現
|  TH  |  TH  |
| ---- | ---- |
|  TD  |  TD  |
|  TD  |  TD  |

寄せ

| TH (left) | TH (center) | TH (right) |
| :--- | :---: | ---: |
| TD | TD | TD |
| TD | TD | TD |

AsciiDoc

  • 行頭.以後改行までキャプションタイトル
  • 2行目表示オプション、headerの他にfooterなどがある。
.An example table
[options="header"]
|=======================
|TH|TH  
|TD    |TD 
|TD    |TD 
|=======================

reST

=====  =====
   TH    TH     
=====  =====  
TD      TD  
TD      TD  
=====  =====

Textile

行見出し
|_. TH |_. TH |
| TD | TD |
列見出し
|_. TH | TD |
|_. TH | TD |
|_. TH | TD |
寄せ
|_. TH |
|=. TD(center) |
|>. TD(right) |
|<. TD(left) |

Wiki

  • 先頭行|~でその行全体がヘッダ? 派生によるかも
|~TH|TH|
|TD|TD|
|TD|TD|

Org-mode

  • ! # といった記号で属性を付与できる?
|-----+-----|
| TH | TH | 
|-----+-----|
| TD | TD |
|-----+-----|
| TD | TD |
|------+----|

Almost Free Text

#---SET-CONTROL tableparser=new
    ! TH        !
    !------------!
    ! TD ! TD ! 
    !-------------!
    ! TD ! TD !

EWB

  • ハードタブ
  • 罫線は罫線用トリガで
//table1{
//tkei
//g{TH  TH//}
//bkei
TD  TD
//tkei
TD  TD
//tkei
//}

Re:VIEW

  • ハードタブ
  • 空欄の場合は.。文字列の最初の行頭の.もこの関係で消えるので対処が要る?
//table{
TH TH
------------
TD TD
TD TD
//}

CAS-UB

|=Heading TH |=Heading TH |
|TD |TD |
|TD |TD |

setext

___________ TH  ___________ TH
              TD                TD
 ---------------  ----------------
              TD                TD  
==============  ==============

Terence's Markup Language

[
*TH* | *TH*
----
TD | TD
----
TD | TD
]

はてな記法

  • *を先頭につけるとTH化?
|*TH|*TH|
|TD|TD|
|TD|TD|

Plain2

  • 交差位置の記号は- + |どれでも同じ。
  • 基本的に罫線は表現通り
  • [[T``]]Tは、「両脇の脇線がない場合」以外は省略可能
[[T
---------------------
| TH | TH  |
============
| TD | TD |
---------------------
| TD | TD |
---------------------
]]T

KARAS

!| TH || TH
|| TD || TD
|| TD || TD

複雑なテーブル

reST

グリッドテーブル
+------------------------+------------+----------+----------+
| Header row, column 1   | Header 2   | Header 3 | Header 4 |
| (header rows optional) |            |          |          |
+========================+============+==========+==========+
| body row 1, column 1   | column 2   | column 3 | column 4 |
+------------------------+------------+----------+----------+
| body row 2             | ...        | ...      |          |
+------------------------+------------+----------+----------+

StructuredText

|---------------------------------------|
| This should give a row with colspan 3 |
|---------------------------------------|
| Col 1  |      Col 2  |       Col 3    |
|---------------------------------------|
| Col 1  |      Col 2                   |
|---------------------------------------|
| Col 1                |       Col 2    |
|---------------------------------------|

|---------------------------------------|
| Column 1   | Column 2
|---------------------------------------|
| Align Top  |         OK               |
|            |                          |
|---------------------------------------|
|            |                          |
| Align Bot  |         OK               |
|---------------------------------------|
|            |                          |
| Align Mid  |         OK               |
| Note the   | offset unequal.          |
|            |                          |
|---------------------------------------|
|Align left  |               Align Right|
|---------------------------------------|

Plain2

   ---------------------------------
   |へん|つくり||  あわせて   |
   |  |   || 漢字 | よみかた |
   |===============================|
   | 金 |   || 錫 | すず   |
   |----| 易 ||------+-----------+
   |  |   || 鯣 | するめ  |
   |  |------||------+-----------+
   | 魚 | 非 || 鯡 | にしん  |
   |  |------||------+-----------+
   |  |   || 鯰 | なまず  |
   |----| 念 ||------+-----------+
   | 手 |   || 捻 | ひねる  |
   ---------------------------------

KARAS

  • ::が水平左結合、:::が垂直上結合。
|| Cell 1 ||  ::    || Cell 2 || Cell 3
|| Cell 4 || Cell 5 ||  :::   || Cell 6
||  :::   || Cell 7 ||  :::   || Cell 8

AsciiDoc

.Multiline cells, row/col span
|====
|Date |Duration |Avg HR |Notes

|22-Aug-08 .2+^.^|10:24 | 157 |
Worked out MSHR (max sustainable
heart rate) by going hard
for this interval.

|22-Aug-08 | 152 |
Back-to-back with previous interval.

|24-Aug-08 3+^|none

|====

Textile

  • \<数字>.で数字分水平結合、/<数字>^ .で上付き、/<数字>~.で下付きの垂直結合
|{background:#ddd}. Cell with background|Normal|
|\2^. Cell spanning 2 columns|
|/2. Cell spanning 2 rows|one|
|two|
|>. Right-aligned cell|<. Left-aligned cell|

Pandocで対応記法出力させたらそれなりに統一できたのでは。

参考リンク

EWB Licenseニアリィイコール3条項BSD

この記事はEWBアドベントカレンダー2019の16日目の記事です。

adventar.org

前回のEWBライブ

binディレクトリに入ってるやつの中に実行用バイナリでないツールが結構入っていることが発覚。

EWB LICENSE

web.archive.org

Copyright (C) 1986, 1999 ASCII Corporation.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. Neither the name of the author may be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

EWBの頒布規約は大体3条項BSDになります。上のアーカイブに記載された日本語訳を掲載しますと、

【著作権表示】
Copyright (C) 1986, 1999 ASCII Corporation.
All rights reserved.

【契約条件】
改変の有無にかかわらず、本ソフトウェアのソースコード及びバイナリーコー
ド形式による再頒布及び使用は、次の契約条件の下に許諾される。
1. ソースコードの再頒布に際しては、上記の【著作権表示】、この【契約条
   件】及び次の【免責条項】の表記を、引き続き維持して明記しなければな
   らない。
2. バイナリー形式による再頒布に際しては、上記の【著作権表示】、この
   【契約条件】及び次の【免責条項】を、再頒布に際し提供する説明書及び
   その他の関連資料に改めて明記しなければならない。
3. 特別な事前の書面による許諾がない限り、本ソフトウェアから派生した製
   品を推奨又は宣伝するために、著作権者名は使用してはならない。

【免責条項】
本ソフトウェアは、著作権者により、「現状有姿のまま(そのままの形で)」
提供されるものであり、商品性又は特定目的への適合性に関する黙示的保証な
ど、明示又は黙示の保証を問わず、いかなる保証をも行うものではない。
いかなる理由によっても、また、契約責任、厳格責任又は(過失によるものを
含む)不法行為責任を問わずどのような責任の理論によっても、著作権者は、
いかなる場合も、本ソフトウェアを使用することにより発生する、あらゆる直
接損害、間接損害、偶発損害、特別損害、懲罰的損害あるいは派生的損害(代
替製品・代替サービスの調達、使用利益、データ又は収益に関する損失、営業
中断による損失など)について何らの責任も負わない。これは、本ソフトウェ
アを使用することにより、これらの損害が発生する可能性について、あらかじ
め示唆されていた場合であっても同様である。

ということで、GitHub上に上のライセンスを表示しながら配置するのはセーフのはず。

github.com

ででーん! ちょこちょこ足します。

実はEWB3.2リリースと3.3のリリースタイミングで頒布のライセンスが変わったとの履歴があるんですが、それ以前のライセンスが分からないんですね。 3条項BSD自体は1999年に登場していますし、コピーライトの表記年はEWB3の登場時の固定っぽいんですよね。

それと、よく見る最近のBSDだとクオーテーションマークが""ですが、バッククオート2つとシングルクオート2つのLaTeXでよしなにしてくれるやつになってます。

pTeXのライセンス

同じくアスキー社の開発であるp\TeX{}のライセンスを確認してみましょう。

github.com

こちらはtexjporgによって管理されている歴史資料になります。

COPYRIGHTを見ると、こちらも3条項BSDですね。表記年と著作者表記は2009年アスキー・メディアワークスになっていますが。