| name | mathematica-style-slides |
| description | Use when creating slide images (16:9 PNG) that must visually match the user's Mathematica notebook presentation deck â white background, orange heavy title, maroon square nested bullets (3 levels + gray sub-sub), Hiragino Japanese fonts, no-bullet paragraph items. Covers the HTML+headless-browser pipeline (reliable for Japanese, easy multi-column), the exact style spec / color / Hiragino font palette, the two-column layout the Mathematica deck cannot do natively, and the render command. Worked examples: Templates/Slides/mathematica-style-twocolumn-slide.html and mathematica-style-bullets-levels.html. |
Mathematica ã¹ã¿ã€ã«ã®ã¹ã©ã€ãäœæ
ãŠãŒã¶ãŒã® Mathematica ããŒãããã¯ã»ãã¬ãŒã³ããŒã·ã§ã³ (slideshow) ã®äžæãšé£ç¶è¡šç€ºããŠãéåæããªãã¹ã©ã€ãç»å (16:9 PNG) ãäœãæé ãšã¹ã¿ã€ã«ä»æ§ã
ãªã HTML + ãããã¬ã¹ãã©ãŠã¶ã§äœãã
- 段çµã容æ: Mathematica ã®ã¹ã©ã€ãã¯å€æ®µçµ (å·Šã«ç®æ¡æžãã»å³ã«å³) ã®ã¬ã€ã¢ãŠããé£ãããå®éã®ãããã¯å³ã仿¹ãªãäžã«çœ®ããŠããããšãå€ããHTML/CSS ãªã
grid/flex ã§å·Šå³æ®µçµãèªç¶ã«çµãããå³ã¯ã§ããã ãå³ã«ã©ã ã«çœ®ã (äžçœ®ãã¯ãããåŽã®å¶çŽã®åé¿ã§ãã£ãŠçæ³ã§ã¯ãªã)ã
- æ¥æ¬èªã確å®:
wolframscript 㯠.wls å
ã®æ¥æ¬èªãªãã©ã«ã UTF-8 ã§èªã¿æããããšããã (æååã)ãHTML ã UTF-8 ã§æžãããã©ãŠã¶ã§ã¬ã³ããªã³ã°ããã°æ¥æ¬èªã¯ç¢ºå®ã«æ£ããåºããWolfram Graphics ã§ããã¹ããçµãããæ¬æã®çµçããããã
- åçŸæ§: ãããã¬ã¹ Edge/Chrome ã®
--screenshot ã§ 1920Ã1080 ãäžçºåºåã
wolframscript ã§ Graphics ã Rasterize/Export ããæãããããæ¥æ¬èªãªãã©ã«èª€èªã»çµçã®æéãã æ¢å®ã¯ HTML çµç±ã
ã¹ã¿ã€ã«ä»æ§ (Mathematica ãããã®èŠãç®)
å®äŸã®åèã¹ã©ã€ã (æŸå°ç¶ç§»å) ãåºæºã«ããæžåŒ:
- èæ¯: çœ
#ffffff
- ã¿ã€ãã«: ãªã¬ã³ãžã»å·ŠäžãHiragino Kaku Gothic ProN W6ïŒæ¬æ ProN ãšãããã倪ãŠãšã€ãïŒçŽ 60pxãè²
#e07c14
- ç®æ¡æžããã¥ã¬ããïŒå¡ãã€ã¶ãåè§ã»éå±€ã€ã³ãã³ãïŒ:
- 第1éå±€: ãã«ãŒã³
#9d1c1cã»åè§ 19pxã»æ¬æ 36px
- 第2éå±€: ãã«ãŒã³
#9d1c1cã»åè§ 16pxã»æ¬æ 30pxã»å·Šã€ã³ãã³ã
- 第3éå±€ïŒãµããµãïŒ: ã°ã¬ãŒ
#8a8a8aã»åè§ 14pxã»æ¬æ 26pxã»ããã«ã€ã³ãã³ã
- ã¢ã€ãã ãã©ã°ã©ãïŒããŒãã¬ããïŒ: åžžã«ãã¥ã¬ãããä»ããå¿
èŠã¯ãªããããé
ç®ã®ä»å 説æã¯ãåè§ãä»ãã芪ã¢ã€ãã ã®æ¬æäœçœ®ã«æããæ®µèœïŒ
.p1/.p2ïŒã§ç¶ããŠããïŒæšå¥šïŒããããã§ãå€è¡ã®è£è¶³ã¯ãã¥ã¬ãããªãã§æãè¿ããŠããã
- æ¬æ: ã»ãŒé»
#1c1c1cã#232323ãHiragino Kaku Gothic ProN W3ïŒãŠãšã€ã3ïŒããã©ã³ãã¯äžèšã## ãã©ã³ããã®ãã¬ããããéžã¶ã
- åºåãèšå·: lead èªãšèª¬æã®éã«
â (è² #b06a16)
- æ°åã¯åè§ã»ååŸã«ã¹ããŒã¹ãå
¥ããªã: ã4ã€ãã2段éãã5ãã§ãŒãºãã1ã¿ãŒã³ãã®ããã«ãæ¥æ¬èªã«é£æ¥ããåè§æ°åã®ååŸã¯è©°ããïŒ
4 〠ã§ã¯ãªã 4ã€ïŒãå
šè§æ°åã¯äœ¿ããåè§ã§çµ±äžãã©ãã³èªãšæ°åã®èªéã¹ããŒã¹ïŒAES-256, PrivacyLevel 0â1, 2段é authorization ã®æ®µéâauthorization éïŒã¯éåžžã©ããæ®ãã
- å·Šå¯ãã»äœçœåºã:
padding: 66px 110px 56px çšåºŠãäœçœã¯åããããªã (ãããèªäœãäœçœå€ã) ãã空ãã倧ãããã°è£è¶³ãã£ãã·ã§ã³ã§ãªãäžèº« (ãµãç®æ¡æžãã»ãµããµãã»æ®µèœèª¬æç) ãå
å®ããã
- å³çã»è£å©å³: å³ã«ã©ã ã«çžŠåãããŒçãæ·¡ãã«ãŒã
#faf6f0 + ãªã¬ã³ãžå·Šçœ« #e07c14 + ãã«ãŒã³çªå·ãããž #9d1c1c ã§æè²ç³»ã«çµ±äž (éç·ãªã©å¯è²ã¯äœ¿ãããããã®æè²ã«åããã)
è²ã®ãŸãšã:
| çšé | è² |
|---|
| ã¿ã€ãã« (ãªã¬ã³ãž) | #e07c14 |
| ãã¥ã¬ããã»çªå·ã»å°èŠåºã (ãã«ãŒã³) | #9d1c1c |
| ãµããµãåè§ (ã°ã¬ãŒ) | #8a8a8a |
| æ¬æ | #1c1c1c / #232323 |
| è£å©ããã¹ã (dim) | #5a5a5a |
| ã«ãŒãå° / 眫 | #faf6f0 / #e6d8c4ã巊眫 #e07c14 |
| ãªã³ã¯é (åºå
žç) | #3a4cc0 |
ãã©ã³ã (Hiragino ãã¬ãã)
ããã㯠Hiragino ç³»ã§çµãŸããŠããããã®ãã©ã³ãã¯æ¬ãã¹ã (Windows) ã«ã€ã³ã¹ããŒã«æžã¿ã§ãGDI ç»é²åã¯ãŠãšã€ãæ¥å°ŸèŸä»ã (... W3 / W8 ãªã©)ãheadless Edge ã§ããã®ååã§å®ãã©ã³ããã¬ã³ããªã³ã°ããã (ãã©ãŒã«ããã¯ã«ãªããªã)ãæå®ã§ããã®ã¯æ¬¡ã® 5 系統:
| åœ¹å² | CSS familyïŒWindows å®åïŒ | çšé |
|---|
| æ¬æ (W3) | "Hiragino Kaku Gothic ProN W3" | æ¢å®ã®æ¬æã»ç®æ¡æžã |
| èŠåºã (W6) | "Hiragino Kaku Gothic ProN W6" | ã¿ã€ãã«ã»èŠåºãïŒæ¢å®ïŒ |
| 匷調ã»lead (W4) | "Hiragino Kaku Gothic Std W4" | lead ã©ãã«ã»<b>ã»å³äžèŠåºã |
| 極倪èŠåºã (W8) | "Hiragino Kaku Gothic StdN W8" | ããé»ãèŠåºããæ¬²ãããšãïŒåŸè¿°ã®æ³šæïŒ |
| äžžãŽã·ã㯠| "Hiragino Maru Gothic ProN W4" | ãããããå°è±¡ã«ããããšã |
| ææ | "Hiragino Mincho ProN W3" (W6 ããã) | ã»ãªã調ã«ããããšã |
â ProN ãš Std/StdN ã¯ãããªå圢ããéã: ProNïŒPro NewïŒã¯çŸä»£çãªããªãStd/StdN ã¯å€ãå圢ã®ããªãæ¬æã ProN ã«ãããèŠåºãã ProN ã«ãããããæ¬æ ProN W3 ïŒ èŠåºã StdN W8 ã®ããã«æ··ãããšãããªãå¥ãã¶ã€ã³ã«ãªããã¿ã€ãã«ã ãå¥ãã©ã³ãïŒHiragino ã§ãªããããã«èŠããïŒå®éã«ãã®ææãåããïŒãProN ã®å€ªããŠãšã€ã㯠W6 ãªã®ã§ãèŠåºãã®æ¢å®ã¯ ProN W6ãã©ãããŠã W8 ã®é»ããèŠããšãã ã StdN W8 ã䜿ãããã®å Žåã¯æ¬æã Std ç³»ã«ãããããå²ãåãã
倪åã¯ãã¡ããªåæ¿ã§åºãïŒfont-weight ã§ã¯ãªãïŒ: Hiragino ã®åãŠãšã€ãã¯å¥ãã¡ã€ã«ã®å¥ãã¡ããªãæ¬æãã¡ã㪠(W3) ã« font-weight:700 ãåœãŠããšãã©ãŠã¶ãåæ (faux bold) ããŠæ±ãã匷調㯠family ã W4 / W6 ã«åãæ¿ã font-weight:normal ã«ãããCSS 倿°ã§åœ¹å²ãå®çŸ©ããŠãããšãã:
:root {
--f-body:"Hiragino Kaku Gothic ProN W3","Hiragino Kaku Gothic ProN","Yu Gothic UI","Meiryo",sans-serif;
--f-medium:"Hiragino Kaku Gothic Std W4","Hiragino Kaku Gothic StdN W4","Yu Gothic UI",sans-serif;
--f-head:"Hiragino Kaku Gothic ProN W6","Hiragino Kaku Gothic StdN W8","Hiragino Kaku Gothic ProN","Yu Gothic UI",sans-serif;
--f-maru:"Hiragino Maru Gothic ProN W4","Hiragino Maru Gothic Pro W4",sans-serif;
--f-mincho:"Hiragino Mincho ProN W3","Hiragino Mincho ProN","Yu Mincho",serif;
}
body { font-family:var(--f-body); font-weight:normal; }
b, strong, .ld { font-family:var(--f-medium); font-weight:normal; }
.title { font-family:var(--f-head); }
æ«å°Ÿã« "Yu Gothic UI" çã® Windows æšæºãè¶³ããŠãããšãHiragino ã®ç¡ãå¥ç°å¢ã§ã厩ããªãã確èªã®ã³ã: äžžãŽã·ã㯠(Maru) ãäžžãã»ææ (Mincho) ãã»ãªãã§åºãã° Hiragino ã¯å¹ããŠãããèŠåºããæ¬æãšããªå圢ãéã£ãŠèŠããã ProN/Std ã®åãéããçãããã©ã³ã远åŸã®äžè¬è«ã¯ ui-output-font-customization ãåç
§ã
CSS ã¹ã±ã«ãã³ (æ®µçµ + 3 éå±€ãã¥ã¬ãã + ãã©ã°ã©ã)
:root ã®ãã©ã³ã倿°ã¯åç¯ã®ãã®ã䜿ãã
html, body { width:1920px; height:1080px; background:#fff;
font-family:var(--f-body); font-weight:normal; color:#1c1c1c; }
.slide { position:relative; width:1920px; height:1080px; padding:66px 110px 56px; }
.title { font-family:var(--f-head); font-size:60px; color:#e07c14; }
.body { display:grid; grid-template-columns:1fr 560px; gap:70px; }
.b1 { position:relative; padding-left:46px; font-family:var(--f-medium); font-size:36px; }
.b1::before { content:""; position:absolute; left:4px; top:15px; width:19px; height:19px; background:#9d1c1c; }
.b2 { position:relative; padding-left:46px; margin-left:50px; font-size:30px; color:#232323; }
.b2::before { content:""; position:absolute; left:6px; top:12px; width:16px; height:16px; background:#9d1c1c; }
.b3 { position:relative; padding-left:42px; margin-left:100px; font-size:26px; color:#3a3a3a; }
.b3::before { content:""; position:absolute; left:5px; top:11px; width:14px; height:14px; background:#8a8a8a; }
.p1 { margin-left:46px; font-size:30px; color:#4a4a4a; }
.p2 { margin-left:96px; font-size:27px; color:#4a4a4a; }
- åè§ãã¥ã¬ããã¯
list-style ã§ãªã ::before ã®å¡ãç䌌èŠçŽ ã§åºããšããµã€ãºã»è²ã»çžŠäœçœ®ãéå±€ããšã«æ£ç¢ºã«å¶åŸ¡ã§ããã
margin-left ã¯ãèŠªã®æ¬æéå§äœçœ®ãã«åãããã.p1=.b1 ã®æ¬æäœçœ®ã.p2=.b2 ã®æ¬æäœçœ®ãããã§æ®µèœèª¬æããã¥ã¬ããæã«ç¶ºéºã«æãã
- éå±€ã¯æ·±ãããããªãã第3éå±€ãŸã§ãç®å®ã«ãããã以äžã¯æ®µèœèª¬æãå¥ã¹ã©ã€ãã«éããã
ã¬ã³ããªã³ã° (1920Ã1080 PNG)
ãããã¬ã¹ Edge (Windows ã«æšæºãChrome ã§ãå¯) ã§ file:// ãæ®ã:
$edge = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
$html = "<絶察ãã¹>.html"
$out = "<絶察ãã¹>.png"
& $edge --headless=new --disable-gpu --hide-scrollbars --force-device-scale-factor=1 `
--window-size=1920,1080 --screenshot="$out" "file:///$($html -replace '\\','/')"
--force-device-scale-factor=1 + --window-size=1920,1080 ã§ 16:9ã»çåãä¿èšŒ (body ãåãµã€ãºã»overflow:hidden ã«ããŠãã)
- åºå PNG ã Read ããŒã«ã§éããŠå®éã®èŠãç®ãå¿
ã確èªããã¯ã¿åºãã»æ¹è¡ã»äœçœãèŠãŠèª¿æŽ â åã¬ã³ããªã³ã°ããç¹°ãè¿ã
- ä¿åå
ã¯ãã¹ããªã·ãŒ (
notebook-path-policy) ã«åŸãããŠãŒã¶ãŒæå®ããªããã°äœæ¥ãã£ã¬ã¯ããª/NotebookDirectory[]
ã¿ã€ãã«ãé€ããæ¬äœç»åïŒã¿ã€ãã«ã¯ãããåŽã§ä»ããïŒ
å® Mathematica ã¹ã©ã€ãã§ã¯ã¿ã€ãã«ã¯ã¹ã©ã€ãã®èŠåºããšããŠå¥ã«ä»ããããšãå€ãããã®å ŽåãHTML ç±æ¥ã®ç»åã¯ã¿ã€ãã«åž¯ïŒeyebrowïŒtitleïŒãåãèœãšããæ¬äœã ãã«ããŠæž¡ãïŒ<slide>_body.pngïŒãæ¬äœã®äœçœ®ã»å¹
ã»äžã®äœçœã¯ãã®ãŸãŸä¿ã€ïŒã¿ã€ãã«ã ãäžããåãïŒã
å®è£
ã¯ãã«ã¹ã©ã€ã PNG ã®ã¿ã€ãã«çŽäžã®çœãã®ã£ããè¡ãæ€åºããŠäžãåãã ããLockBitsïŒMarshal.Copy ã§äžæ¬èªã¿ããy=135ïŒã¿ã€ãã«ã®ã€ã³ã¯å
ïŒããäžãžèµ°æ»ããŠæåã®çœè¡ g1ãç¶ãæåã®ã€ã³ã¯è¡ g2ïŒæ¬äœã®å
é ïŒãèŠã€ãããã®äžç¹ã§æ°Žå¹³ã«ããããïŒäœçœ®ã®ããŒãã³ãŒãäžèŠã»3 æå
±éïŒã
Add-Type -AssemblyName System.Drawing
function Crop-Top($inPath,$outPath){
$bmp=New-Object System.Drawing.Bitmap($inPath); $w=$bmp.Width; $h=$bmp.Height
$d=$bmp.LockBits((New-Object System.Drawing.Rectangle 0,0,$w,$h),[System.Drawing.Imaging.ImageLockMode]::ReadOnly,[System.Drawing.Imaging.PixelFormat]::Format32bppArgb)
$by=New-Object byte[] ($d.Stride*$h); [System.Runtime.InteropServices.Marshal]::Copy($d.Scan0,$by,0,$by.Length); $s=$d.Stride; $bmp.UnlockBits($d)
function Ink($y){ $r=$y*$s; for($x=0;$x -lt $w;$x+=3){ $i=$r+$x*4; if($by[$i]-lt245 -or $by[$i+1]-lt245 -or $by[$i+2]-lt245){return $true} } return $false }
$g1=135; for($y=135;$y -lt 260;$y++){ if(-not (Ink $y)){$g1=$y;break} } # ã¿ã€ãã«äžç«¯ã®çœè¡
$g2=$g1; for($y=$g1;$y -lt 360;$y++){ if(Ink $y){$g2=$y;break} } # æ¬äœã®å
é è¡
$cut=[int](($g1+$g2)/2); $ch=$h-$cut
$c=New-Object System.Drawing.Bitmap $w,$ch; $g=[System.Drawing.Graphics]::FromImage($c)
$g.DrawImage($bmp,(New-Object System.Drawing.Rectangle 0,0,$w,$ch),(New-Object System.Drawing.Rectangle 0,$cut,$w,$ch),[System.Drawing.GraphicsUnit]::Pixel)
$g.Dispose();$c.Save($outPath,[System.Drawing.Imaging.ImageFormat]::Png);$c.Dispose();$bmp.Dispose() }
Crop-Top "<slide>.png" "<slide>_body.png" ã§ 1920x892 çšåºŠïŒã¿ã€ãã«åž¯ã¶ãäœãã»å
šå¹
ã»äžäœçœã¯å
ã®ãŸãŸïŒã«ãªããåæ: y=135 ãã¿ã€ãã«ã®ã€ã³ã¯å
ã«å
¥ãæ¬æã¬ã€ã¢ãŠãïŒãã®ã¹ãã«ã® padding/èŠåºããµã€ãºïŒãeyebrow ãæ®ãããçã®äŸå€æã¯ g1 éå§ y ã調æŽãããã¿ã€ãã«åç¬ã®ç»åãèŠãã®ã§ã¯ãªããæ¬äœããã¿ã€ãã«ãé€ãç¹ã«æ³šæïŒéå»ã«ãããåãéããïŒã
ã¬ã€ã¢ãŠãã®æé
- å³ã¯å³ã«ã©ã ãæ¢å®ãå·Šã«ç®æ¡æžããå³ã«çžŠåãããŒå³ã»å³çãäžçœ®ãã¯ãããå¶çŽã®åé¿ã«ãããªãã
- ç®æ¡æžãã¯è©°ã蟌ã¿ãããªããäžè¡ã«èª¬æãé£çµããããã第2éå±€ã®ãµãç®æ¡æžãã»ç¬¬3éå±€ã®ãµããµãã»ããŒãã¬ããã®æ®µèœèª¬æ (
.p1/.p2) ã«å±éããæ¹ãèªã¿ãããäœçœãåãŸããåžžã«ãã¥ã¬ãããä»ããå¿
èŠã¯ãªãã
- äœçœãäœã£ãããããŒãžçªå·ãå®è£
ã¡ã¿çã®è£è¶³ãã£ãã·ã§ã³ã§ãªãå
容 (ãµãé
ç®ã»ãµããµãã»æ®µèœèª¬æã»è£è¶³å³) ãå¢ããã
- é
è²ã¯æè² (ãªã¬ã³ãžïŒãã«ãŒã³) ã«çµ±äžãåããããã®äžæãšããŠéŠŽæãŸããã
å®äŸ (worked examples)
Templates/Slides/ ã® 2 ã€ãè€è£œããŠäžèº«ãå·®ãæ¿ããã®ãéãïŒå .html ã®é£ã«åå .png ã®ã¬ã³ããªã³ã°çµæããïŒ:
mathematica-style-twocolumn-slide.html â å·Šã«ç®æ¡æžãïŒb1 / b2 / b3 ãµããµã / p1 段èœèª¬æãå«ãïŒãå³ã«çžŠåãããŒå³ + èšèšååã®2段çµãHiragino ãã¬ããã® CSS 倿°å®çŸ©ããããåºæºã
mathematica-style-bullets-levels.html â åèããããšåãåäžã«ã©ã ã§ãb1 / b2 / b3ïŒã°ã¬ãŒâ ã®ãµããµãïŒ / 段èœèª¬æïŒããŒãã¬ããïŒ ãäžéã宿Œãéå±€ãšæ®µèœã®äœ¿ãåãã®èŠæ¬ã
é©çšã¿ã€ãã³ã°
- ãMathematica ã¹ã©ã€ããšé£ç¶è¡šç€ºããŠéåæããªãã¹ã©ã€ã (ç»å) ãäœã£ãŠããšèšããããšã
- æ¢åã® Mathematica ãã¬ãŒã³ã«å·®ã蟌ã 16:9 ã®ã¹ã©ã€ãç»åãèŠããšã
- é¢é£: ãã©ã³ã远åŸã¯
ui-output-font-customizationãä¿åå
㯠notebook-path-policy