Antenna House Formatter
ふたつのスタイルシート(XSL 1.1 ・CSS )に対応した自動組版・印刷ソフトウェア
-
このスライドもHTML+CSSをFormatterでレイアウト
-
過去ウェビナーではXSL製もある
-

CSS組版で簡単レイアウト
ふたつのスタイルシート(XSL 1.1 ・CSS )に対応した自動組版・印刷ソフトウェア
このスライドもHTML+CSSをFormatterでレイアウト
過去ウェビナーではXSL製もある
流し込んでみないとどうなるか分からないものを美しく処理できる
「このページはm章だ(ヘッダ・フッタ)」
「改ページの前(後)にこの部分は收めたい」
「……についてはnページを参照」
「左右のページで余白を変える」
V7.4が2023-12にリリース
素朴で、でも難しかった要望のレイアウトが簡単に!
並べた図版がいい感じに自動的に並んでほしい
特定位置に配置したい
目的のHTML要素を指定するのが大変
コンテンツをコンテナとアイテムという構造に対応させて扱う
display:flex
, display: grid
inline-flex
, inline-grid
は行内用)display: flex-item
, display: grid-item
)
アイテムの要素が順に並んでいく。アイテムの並べ・揃え・余白の取り方を外側(コンテナ)で制御できる
flex-direction: row;
flex-wrap:wrap
flex-direction: column
justify-content
align-items
flex-basis
・flex-grow
・flex-shrink
コンテンツの横並べがinline-blockなどより格段に簡単
並べたアイテムの縦配置も変更し易い
縦に並べ変えるのが簡単
Webページと違ってスクロールできないため、flex-wrap: wrap
が重要
隙間のある空間でピンポイントの配置はできない→グリッドの出番
CSS Grid以前からWebサイトでコンテンツを自在に配置する要求はあったが、tableやframesetといったHTML要素をいじることで実現していた
テーブル | |
---|---|
A | B |
C |
テーブル
A
B
C
]]>
HTML上は単純な構造のまま
grid
AB
C
トラックを設定し、行と列の格子線・テンプレートでアイテムを配置
グリッドの縦横に用意する帯(または筋)。帯の幅の中にアイテムを配置する
.grid {display:grid;
grid-template-rows: 1cm 1cm ...;
/*inline-start-endの端から端まで引かれる帯の各幅*/
grid-template-columns: 1cm 1cm ...;
/*brock-start-endの端から端まで引かれる帯の各幅*/
/*全長から固定幅でない幅サイズを等分した fr 単位指定も可能*/
row-gap: 0pt;/*inline-start-endのトラック間の余白*/
column-gap: 0pt; /*brock-start-endのトラック間の余白*/
}
アイテムの開始・終了位置をトラックの端の
.item {
/*先頭のrowトラック*/
grid-row-start: 1;
grid-row-end: 2;
/* 2番目のcolumnトラック開始位置から
3番目のcolumnトラック終了位置 */
grid-column-start: 2;
grid-column-end: 4; }
12本のトラックを引いたら、線の番号は1-13
gapが設定されていると数え方が若干ややこしい
設定したトラック上で、矩形に区切った範囲を名前付けし、名前で位置を指定する
.grid {
/*いわゆるgrail型のコンテンツ配置例*/
grid-template-areas:
"header header header"
"nav main ."
"footer footer footer";
}
header {grid-area: header;}
footer {grid-area:footer;}
使用しない領域は「.
」を記述
矩形の形状のみ(L字などは不可)
grid-auto-rows
・grid-auto-columns
で未指定の箇所に来た場合の追加トラックを設定
ページレイアウト(スクロール・画面伸縮できないもの)と折り合いが悪く、ページの端を越えていくこともある
グリッド位置を指定しないアイテムは格子線の順に配置されていく。これも伸縮しないページメディアと折り合いが悪い
行内でどのようなときにグリッドがあると便利か?
ex. 漢文配置
template-area
で返り点や送り仮名位置の要素を配置返り点位置は他では結構難しい
トラックの設定と、格子線またはテンプレート領域配置の2段階
レスポンシブではないページメディアでは、自動配置は慎重に
長さが分からないコンテンツには向かない(矩形のサイズ予想ができるものがよい)
(線名など、更に複雑な話は今回省いている)
レイアウトが簡潔に
p {/* p要素すべて */}
#fig1 {/* idがfig1の要素 */}
:last-child,
:last-child > :last-child {
/* 最後の要素とその子の最後の要素 */
}
セレクタで当てる対象を指定する
ID指定など、構造と見た目が離れたセレクタ指定は読みにくい
単純なセレクタのみでは記述が複雑に
:is()
,:where()
複数の指定をまとめる
section h1 span,
section h2 span {sectionの子孫のh1の子孫のspanと
sectionの子孫のh2の子孫のspan
}
/*詳細度の違いがある。
慣れるまではwhereをまず使うのがおすすめ*/
section :where(h1,h2) span {
...}
:has()
○○:has(~)
で「~を持つ○○要素」を対象にできる
section > h2 {
background-color: cadetblue;
}
section:has(>h2) {
/*h2レベルのsectionだけを指定*/
border: solid 1pt black;
padding: 0.5rem;
}
section:has(>h3) {
background-color: lightpink;
}
h2レベル
h3レベル
...
:not()
○:not(~)
で「~でない○要素」を指定。CSS4の:not()
では複数を指定可能に
li:not(.special, .veryspecial ) {
/*複数のセレクタを同時指定など*/
...
}
p:not(:first-child)) {
/*2つめ以降のp*/
}
::before(n)
,::after(n)
要素の前後に複数のコンテンツを追加する
::before
,::after
要素の前後にコンテンツを表示する疑似要素
1つの要素に各1つずつ指定可能
装飾を変えたい場合、HTMLタグを増やすことになる
::before(n)
,::after(n)
拡張h2::before(1) {
content: '第' counter(sect) '節';
text-decoration: underline;
font-size: x-large }
h2::before(2) {
content: '第' counter(chap) '章';
font-size: xx-large;
}
(-ah-)border-radius: diagnonal;
(-ah-)border-radius: diagonal
角を丸めではなく対角線を引いた形状に。このスライドでも多用
.card {
/*右下の角にだけ作用させる */
border-bottom-right-radius: 30pt 30pt diagonal;
}
MS OfficeがなくてもWord,Excel,PowerPointをPDFにできる
怪しいOffice文書のマクロを排除して閲覧
axf:image-preproc
Office文書を外部グラフィック参照に指定すると、OSDCでPDF化した結果を埋め込める
Formatter V7.4はCSS機能を中心に大強化
おまけ:未紹介機能の一部