如何将语法突出显示的代码粘贴到Keynote '13中?


16

我使用Keynote进行了大量代码演示。语法高亮使它们可读。

过去,我使用基于Web的语法突出显示工具,然后将易于阅读的代码粘贴到演示文稿中。

当我升级到包括Keynote 6.1的iWork '13时,粘贴内容会删除字体样式和颜色。

例如,如果我从GitHub提取此彩色代码并将其粘贴到Keynote中,它将删除所有格式,如下所示:

在此处输入图片说明

有没有办法将语法突出显示的代码添加到这些演示文稿中?


珍妮,您能告诉我们您用来查看和复制代码的荧光笔吗?
Tony Williams

添加了示例源(GitHub)和结果的屏幕截图。
模仿

你使用的是什么浏览器?
艾伦·舒特科

@Alan当我观察到这种行为时,我正在使用Chrome 34
2014年

Answers:


13

“简短”答案

...是不同的应用程序以不同的方式将格式化的文本复制到剪贴板,并且不同的应用程序支持从不同格式进行粘贴。通常,您会得到某种“纯文本”格式,以及剪贴板中的HTML或RTF格式的文本,这取决于粘贴应用程序来选择最喜欢的文本。

Keynote 6.1绝对支持某种格式的文本粘贴,因为我可以将其与Safari一起使用。但这似乎不适用于Firefox或Chrome(在撰写本文时)。通过一点测试,看来Apple应用程序都可以很好地协同工作(在此并不奇怪),还有一些其他应用程序也可以从Apple应用程序(包括Microsoft Office产品)复制/粘贴。不幸的是,当您从Chrome复制时,您只能将纯文本和HTML格式的文本复制到剪贴板,因此看来Apple的iWork应用程序不支持粘贴HTML格式的文本。

因此,如果复制/粘贴不包含格式,则可以:

  • 尝试使用其他浏览器进行复制,例如Safari;要么
  • 查找要粘贴的中间应用程序(可以“讲” HTML格式,并且可以重新复制为Keynote / etc理解的格式),例如Apple自己的TextEdit.app

出乎意料的是,苹果自己的TextEdit.app会很高兴地从Chrome中粘贴格式化的文本,并且可以将其重新复制到剪贴板并粘贴到Keynote / Pages / etc等格式中。

根据您的观点,这在Chrome / Firefox或Pages / Keynote / etc等中似乎是一个限制(或错误),但最终它们根本不讲相同的格式语言(当前)。

我鼓励遇到这种情况的任何人将反馈反馈给开发者双方,以期解决此问题-通过支持RTF / RTFD复制的Chrome / Firefox(或除HTML之外最标准/合适的方法)或苹果公司的iWork应用程序,支持粘贴HTML内容。


有关复制到剪贴板的更多信息

当您将某些文本复制到剪贴板时,根据应用程序的不同,可能会以几种格式复制文本。您可以使用Apple的Clipboard Viewer应用程序查看这些内容(需要在Xcode中构建)。

例如,从谷歌浏览器复制,剪贴板获取与信息,我的四个独立的副本填充复制个纯文本(public.utf8-plain-textNSStringPboardType),和两个HTML格式(public.htmlApple HTML pasteboard type)。

从其他应用程序复制给格式类型的各种组合,与其他一些常见的是'TEXT' (CorePastboardFlavorType)com.apple.traditional-mac-plain-textApple PDF pasteboard typeApple PICT pasteboard typepublic.rtfNeXT Rich Text Format v1.0 pasteboard typeNeXT RTFD pasteboard typecom.apple.flat-rtfdcom.apple.iWork.TSPNativeDatacom.adobe.pdfcom.adobe.indesign-import-ustl,等...

如您所见,存在多种纯文本格式(具有UTF8 / UTF16等各种编码),RTF类型,PDF和Adobe类型,图像类型。还有的是复制的数据一堆元数据类型描述应用程序(例如com.apple.iWork.TSPNativeMetadata),或复制的文本(例如功能com.apple.iWork.TSPDescription),而且似乎什么要分开文字,样式数据(ustlTEXTCorePasteboardFlavorTypeS,以及它们的com.adobe.indesign-import-等价物)。

我不知道要粘贴哪些应用程序支持哪种格式类型的任何方法,但是使用剪贴板查看器可以快速查看复制时生成的格式类型。


就是这样 就我而言,这是Keynote 6.1与Chrome的交集。进一步的测试表明,从Safari 7复制的内容有效,但是Chrome 34和Firefox 27无效:(
逼近2014年

我建议您同时向Chrome和Firefox提交错误报告(或对现有的错误/功能请求进行投票)。如果您链接到此处的相关错误,您肯定会获得更多支持者。
drfrogsplat 2014年

我已经尝试了许多其他供应商提供的其他副本,似乎只有从Apple软件进行复制才行。从非Apple软件复制的内容似乎也可以在彼此粘贴时正常工作。换句话说,这似乎是Apple的错误,但我不会花时间去研究任何进一步的错误(或文件错误)。
模仿2014年

经过更多调查,它并不像“仅苹果到苹果”那样简单,因为MS Word和Apple的TextEdit几乎都可以使用...但是还怀疑这可能是Apple Bug,因为它们不支持从Windows粘贴。 iWork应用程序中的HTML文本。
drfrogsplat 2014年

谢谢你 我试图将代码从Xcode复制到Pages。必须使用TextEdit作为中介有点令人沮丧,但至少现在我可以做到!救了我一堆头撞墙实例!;-)
mbm29414

7

这可能是您正在使用的在线荧光笔。

我使用http://markup.su,它与Keynote 6.1配合使用-它可以自动检测多种语言并具有多种“主题”。

如果不是荧光笔,则可能是您的模板或浏览器。我能够将您的代码完美地从Safari中的markup.su粘贴到Keynote中。

在此处输入图片说明


markup.su突出显示了一些很棒的内容,但是在Keynote 6.1中粘贴到文本字段或形状的text属性中后,颜色和样式仍会消失。:\
模仿

1
这很奇怪,因为它在一两个小时前对我来说测试还不错。只需从Safari复制一个副本,然后粘贴到Keynote中就可用于Python和Perl。
托尼·威廉姆斯

它也适用于Keynote 6.5.3!(Y)
Randika Vishman

1
它适用于Keynote 6.6.1,但是您必须从Safari复制它。
luzny

是的,它必须从Safari复制。Chrome无法使用。
Jason Gao

3

如果您不喜欢在线粘贴代码的想法,请考虑安装Pygments python软件包并在命令行中生成突出显示的语法:

pygmentize sms_me_last_line.sh

从终端复制并粘贴到Keynote中对我来说很有效。但是我花了一段时间才找到用于删除背景文字颜色的格式设置控件。(单击工具栏中的格式以显示格式选项,单击文本,单击样式,然后单击齿轮以显示高级格式选项。在该弹出窗口中,您将找到“字符填充颜色”。)



1

这是Keynote '13中的一个错误:

当您粘贴到现有文本框中时,可以将富文本从Xcode粘贴到Keynote。

,当你粘贴到一个新的文本框中。


除了首先在其中输入文本之外,是否有其他解决方法?
罗布

我发现最方便的是只创建一个文本框,选择它,然后粘贴到其中。
mz2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.