首页 文章

我打印时如何停止MATLAB剪切图形的 Headers

提问于
浏览
3

当我用带有 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 回答

  • 0

    我当前可以't seem to reproduce your problem on the computer I'(参见我默认获得的值 - Top是 8.11 ):

    enter image description here


    但是,如果您的问题是我认为的(我正在处理),请尝试在字符串末尾添加 _{ } . 这是一个TeX字符串,意思是"subscripted space",它将文本的其余部分略微向上推 . 如果剪辑从顶部发生,您也可以在第一行使用 ^{ } . 我发现这个解决方法也适用于轴 Headers 和标签 .

    夸张,解决方法如下:

    titleString = sprintf('^{^{^{^{^{^{ }}}}}}Multi\nLine\nTitle');
    

    即使是 Top = -0.59 ,它显示的单词"Multi" .

    如果以上不是你想要的,你可能想看看健壮的export_fig .

  • 0

    我可以确认我的裁剪问题是由这一行引起的:

    set(0,'DefaultFigurePaperOrientation','landscape')
    

    我修改了我的程序,而不是从这开始 .

    set(0,'DefaultFigurePaperOrientation','portrait')
    set(0,'DefaultFigurePaperType','A4')
    

    问题已经消失了 .

    如果用户使用打印预览功能,他们仍然可以横向打印 .

相关问题