当我用带有 Headers 的MATLAB创建一个图形时,然后使用File | Print选项打印图形, Headers 被剪裁 . 请尝试使用此代码作为示例
t = linspace(0,2*pi,1000);
s = sin(t);
figure
plot(t,s)
titleString = sprintf('Multi\nLine\nTitle');
title(titleString)
disp('Now press File|Print Preview on the figure and observe that the title is clipped.')
disp('This happens with all titles, the multi line title makes it more obvious.')
disp('I know I can fix it with Fill Page or Center, but I should not have too.')
您还可以在打印预览中看到问题 . 正如我在示例代码中所说,我知道我可以使用打印预览然后填充页面或中心来解决问题,但我不希望使用我的代码的人必须使用解决方法 .
我用r2014a和r2015b观察到了这个问题 . 我认为其他降级也会受到影响 .
在创建使绘图居中或填充页面并使问题消失的图形之前,我可以进行设置吗?我应该做些其他设置来避免这个问题吗?
这里有一些调试信息 . 如果按文件|打印预览,MATLAB报告左0.64,上-0.59,宽度20.32,高度15.24 . 我猜这个问题与负Top值有关 . 这些是MATLAB的默认值;我没有尝试改变这些 Value 观 .
还有一件事 . 我在英国,所以我的默认纸张/打印机设置将用于A4纸,如果这有所不同 .
编辑:
看起来我的问题是由我的程序中的两行引起的:
set(0,'DefaultFigurePaperOrientation','landscape')
set(0,'DefaultFigurePaperType','A4')
我认为,因为画像方向的纸张预计会出现在纸上,我看到了这些问题 .
也许我应该修改我的问题:我需要在MATLAB数字中进行哪些更改,以便在横向A4纸上正确打印(理想情况下在中心,缩放以填充页面,但方向正确) . 所有这些都没有使用打印预览 .
但我打算这样做来编码我的问题 .
set(0,'DefaultFigurePaperOrientation','portrait')
set(0,'DefaultFigurePaperType','A4')
2 回答
我当前可以't seem to reproduce your problem on the computer I'(参见我默认获得的值 - Top是
8.11
):但是,如果您的问题是我认为的(我正在处理),请尝试在字符串末尾添加
_{ }
. 这是一个TeX字符串,意思是"subscripted space",它将文本的其余部分略微向上推 . 如果剪辑从顶部发生,您也可以在第一行使用^{ }
. 我发现这个解决方法也适用于轴 Headers 和标签 .夸张,解决方法如下:
即使是
Top = -0.59
,它显示的单词"Multi" .如果以上不是你想要的,你可能想看看健壮的export_fig .
我可以确认我的裁剪问题是由这一行引起的:
我修改了我的程序,而不是从这开始 .
问题已经消失了 .
如果用户使用打印预览功能,他们仍然可以横向打印 .