function run_all_figures() %RUN_ALL_FIGURES 生成 docs/figures 下的全部论文插图。 % 数据由 scripts/build_figure_data.py 写入 docs/figures/.data/*.mat。 % 本机图形子系统在同一批处理会话里连续渲染多张图会崩溃,故每张图单独起会话; % 这里只作为 MATLAB 内的手动入口,逐张调用并记日志。 here = fileparts(mfilename('fullpath')); addpath(here); log = fullfile(here, 'run_all_figures.log'); items = { 'flow-overall-architecture', @fig_flow_overall 'steps-state-machine', @fig_steps_state_machine 'timing-attachment-example-105-111-194-199', @fig_timing_attachment 'timing-measured-q3-10-sources', @fig_timing_measured 'geo-q1-convex-intersection-zoom', @fig_geo_q1_meetup 'geo-q1-diameter-circle-counterexample', @fig_geo_q1_counterexample 'geo-q2-guaranteed-reception-disk', @fig_geo_q2_safe_disk 'geo-q3-seven-point-coverage', @fig_geo_q3_coverage 'geo-q4-minimum-cover-31-points', @fig_geo_q4_mincover 'replay-webui-q3-omnidirectional', @() fig_replay('replay_q3') 'replay-webui-q4-directional', @() fig_replay('replay_q4') }; fid = fopen(log, 'w'); failed = 0; for i = 1:2:numel(items) name = items{i}; fn = items{i + 1}; try fn(); fprintf(fid, 'OK %s\n', name); catch err failed = failed + 1; fprintf(fid, 'FAIL %s: %s\n', name, err.message); end end fclose(fid); if failed > 0 fprintf('有 %d 张图生成失败,详见 %s\n', failed, log); end end