ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
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
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
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""Repair text overflow in generated/static book SVGs (in place).
|
||||
|
||||
Most figures under images/ are produced by the gen_chN_figs.py scripts (which
|
||||
now self-correct via svg_lib.SVG.render), but several sets — fig0-*, fig6-*,
|
||||
fig7-*, the multimodal fig9-*, and fig10-* — are static SVGs with no live
|
||||
generator. This tool applies the same width model (svg_lib.fit_overflow) to any
|
||||
SVG on disk, shrinking only the font-size of text runs that spill outside their
|
||||
containing rectangle or the canvas. It is safe (positions are never moved) and
|
||||
idempotent (re-running makes no further changes).
|
||||
|
||||
Usage:
|
||||
python3 fit_svg_text.py # fix every images/*.svg
|
||||
python3 fit_svg_text.py images/fig6-3.svg ... # fix specific files
|
||||
"""
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
from svg_lib import fit_overflow
|
||||
|
||||
IMG = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'images')
|
||||
|
||||
|
||||
def process(path):
|
||||
with open(path, encoding='utf-8') as f:
|
||||
original = f.read()
|
||||
fixed = fit_overflow(original)
|
||||
if fixed != original:
|
||||
with open(path, 'w', encoding='utf-8') as f:
|
||||
f.write(fixed)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def main(argv):
|
||||
targets = argv[1:] or sorted(glob.glob(os.path.join(IMG, '*.svg')))
|
||||
changed = 0
|
||||
for path in targets:
|
||||
if process(path):
|
||||
changed += 1
|
||||
print(f' fitted {os.path.basename(path)}')
|
||||
print(f'\nAdjusted {changed}/{len(targets)} SVG file(s).')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
Reference in New Issue
Block a user