我有一个通常运行愉快的程序,它可以获取文件、绘制它们、吐出 pdf(字母大小)。我使用注释在一组三个子图上方放置标题,并用作带有文件信息和日期的页脚。我希望标题位于页面顶部,从边缘填充到边缘,居中。
我有两种运行程序的方式:“批处理”模式和“交互”模式。在“交互”模式下,我用一个简单的figure()
命令创建图形。在“批处理”模式下,我使用figure('visible','off')
. 这是我制作注释的命令:
annotation(obj.hFigure(f),'textbox',[0 0.9 1 0.1],...
'String',title,...
'HorizontalAlignment','center',...
'FontSize',18,...
'LineStyle','none',...
'FitBoxToText','off');
在这里,“obj.hFigure(f)”只是我当前正在处理的图形的句柄。如您所见,我将图形放在图形顶部附近,并确保文本超出框的底部(以防它更大)。
我的问题是上述注释的边距。在批处理模式下(没有显示数字),我在文本的两侧得到 10% 左右的边距,这破坏了布局。在交互模式下(数字显示),我没有得到边距:文本正确地从一个边缘流到另一个边缘。
我已将问题缩小到以下问题:如果我使数字可见(figure('visible','on')
)并打开,我可以在批处理模式下获得对 ps 打印的正确响应
propertyeditor(gcf);
plotbrowser(gcf);
在绘制每个图之后。这使得程序花费大约两倍的时间(这不是什么大不了的事)。但我不明白的是:这两个命令做了什么drawnow
或refresh
不做什么?!