Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

92 lines
2.9 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Build the complete book as a single PDF (ElegantBook design, teal/cyan theme).
# Requirements: pandoc, xelatex, ElegantBook class, rsvg-convert (librsvg),
# fonts: Menlo / Arial Unicode MS (macOS) — Linux auto-falls back
# to DejaVu Sans/Mono and Noto CJK (see preamble.tex).
# Usage: cd book-hu && bash build_pdf.sh
# Note: chapter/section numbers come from the document class; source headings
# carry no manual numbers (see git history for the de-numbering pass).
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
# ── Runtime environment tweaks (harmless on macOS, needed on Linux/TeX Live) ──
# 1) This book is large enough to exhaust XeTeX's default main memory
# ("TeX capacity exceeded ... [main memory size=5000000]") during page
# output. main_memory is baked into the format at dump time, but
# extra_mem_top/bot extend an existing format at runtime — so we bump them
# here instead of rebuilding the xelatex format.
export extra_mem_top=8000000
export extra_mem_bot=8000000
# 2) The mac-only monospace font (Menlo) is probed with \IfFontExistsTF in
# preamble.tex. On systems without it, kpathsea otherwise spawns METAFONT to
# build a Menlo.tfm (slow, noisy, always fails) before the DejaVu Sans Mono
# fallback engages. Disabling on-the-fly TFM creation makes the probe return
# immediately with the correct "not found" result.
export MKTEXTFM=0
OUT="AI-Agents-in-Depth-v2.0-hu.pdf"
CHAPTERS=(
introduction.md
chapter1.md
chapter2.md
chapter3.md
chapter4.md
chapter5.md
chapter6.md
chapter7.md
chapter8.md
chapter9.md
chapter10.md
afterword.md
)
# Verify all chapters exist
for ch in "${CHAPTERS[@]}"; do
if [ ! -f "$ch" ]; then
echo "Error: $ch not found" >&2
exit 1
fi
done
echo "Building PDF from ${#CHAPTERS[@]} files..."
pandoc "${CHAPTERS[@]}" \
-o "$OUT" \
--from markdown+lists_without_preceding_blankline \
--pdf-engine=xelatex \
--lua-filter=crossref.lua \
--lua-filter=experiment_box.lua \
--toc \
--toc-depth=3 \
--number-sections \
-V documentclass=elegantbook \
-V classoption=lang=en \
-V classoption=cyan \
-V classoption=device=normal \
-V author="Bojie Li" \
--metadata title-meta="AI Agent Tervezési elvek és gyakorlat" \
--metadata author-meta="Bojie Li (Hungarian translation: @barmivalami0-ux)" \
-H preamble.tex \
--include-before-body=cover.tex \
--highlight-style=kate \
--columns=80 \
2>&1
if [ -f "$OUT" ]; then
SIZE=$(du -h "$OUT" | cut -f1)
PAGES=$(python3 -c "
import subprocess, re
r = subprocess.run(['pdfinfo', '$OUT'], capture_output=True, text=True)
m = re.search(r'Pages:\s+(\d+)', r.stdout)
print(m.group(1) if m else '?')
" 2>/dev/null || echo "?")
echo ""
echo "Done: $OUT ($SIZE, $PAGES pages)"
else
echo "Error: PDF generation failed" >&2
exit 1
fi