Skip to content

Instantly share code, notes, and snippets.

Created January 18, 2012 03:52
Show Gist options
  • Save jimbojsb/1630790 to your computer and use it in GitHub Desktop.
Save jimbojsb/1630790 to your computer and use it in GitHub Desktop.
Code highlighting for Keynote presentations

Step 0:

Get Homebrew installed on your mac if you don't already have it

Step 1:

Install highlight. "brew install highlight". (This brings down Lua and Boost as well)

Step 2:

Highlight your source. "highlight -O rtf myfile.php | pbcopy". This will highlight the source code in RTF format and copy the result of that operation to your Mac's clipboard.

Step 3:

Paste into your slide in Keynote. Keynote will create a new text box with your highlighted code. You can adjust the width as needed, and adjust the font size with cmd+ and cmd-

Copy link

lrytz commented Nov 8, 2014

Here's how to set up a keyboard shortcut to highlight the current selection directly within Keynote:

Copy link

nikcorg commented Nov 13, 2014

On mac, you can quickly preview a HTML version with the help of netcat:

(cat <source> | highlight --inline-css | nc -l 5555)& open http://localhost:5555

Copy link

highlight: Could not read input file:

Copy link

lkuper commented Sep 12, 2015

I've done this for years with pygmentize: pygmentize -f rtf <filename> | pbcopy does the trick, although some upthread commenters have fancier variations.

Copy link

prodis commented Dec 6, 2015

Thank you. This helped me to create my last presentation.

Copy link

@aoberoi Did you figure out a solution to persist background color using highlight?

Copy link

Thank you. This helped me to create my last presentation.

Copy link

Anyone has ideas for ES6 support ?

Copy link

Thanks for advice. Works perfect for my slides.

Copy link

satblip commented Feb 10, 2016

Thanks for the share!

Copy link

I tried and succeeded in copy-pasting from PHPStorm and XCode aswell [ MacOS 10.11.3 ].
@freak4pc : works in Atom too with the copy-as-rtf package, which uses pygments under the hood.

It seems there is a Sublime package doing the same.

As far as I know, this is not working with Netbeans

Copy link

fancymax commented Jul 5, 2016

Thanks,very helpful~

Copy link


Copy link

cblanc commented Sep 6, 2016

To format JSON with human readable spacing and breaklines (requires python 2.6+)

pbpaste | python -m json.tool | highlight --syntax=json -O rtf | pbcopy

Copy link

gyzerok commented Feb 21, 2017

Any suggestions about which highlight theme is better to use for good contrast on white slides?

Copy link

@rafarocha I found moria, neon, vampire, and zenburn are good for themes with dark background.

Copy link

rkettelerij commented May 2, 2017

This is a real gem! Thanks for sharing.

Tip: if you have some code on your clipboard and want it highlighted, enter: pbpaste | highlight -O rtf --syntax=groovy | pbcopy (replace syntax=groovy with your language of choice)

Copy link

xiaoronglv commented Aug 23, 2017

why are background color missed ?


this snippet is generate by this commmand

export PATH=$PATH:/usr/local/bin
pbpaste | highlight -O rtf --syntax {query} --font-size 14 --font Inconsolata --style zellner --inline-css | pbcopy

Copy link

Any solutions for highlighting jsx code?

Copy link

The following works for VSCODE.. add the following in your keybindings.json

      "command": "editor.action.clipboardCopyWithSyntaxHighlightingAction",
      "key": "shift+cmd+c"

Now any bit of code you want to copy do a cmd + shift + c.
Paste this onto a text editor like TextEdit for mac. Now copy the same code from textEdit and paste onto keynote..

Copy link

My solution is to use Vim with vim-polyglot installed for syntax highlight

  1. Open the file with the code on Vim
  2. Use vertical selection (Option+Command + Left Click) on Terminal to select the part of the code I want to put into Keynote.
  3. Pasted the copied content into a page in Keynote, the content is already formatted
  4. You can customize the formatting even further on Keynote


  • point 2 works on iTerm as well, but you have to enable the option to copy text with styles.
    Prefs > Advanced > Copy to pasteboard on selection includes color and font style.
  • The background color of your terminal is also copied, use Keynote to remove the background color. see this image

Copy link

javadba commented Oct 12, 2018

I would like to reduce the inter-line spacing : can either highlight or pygmentize handle that?

Copy link

It seems does not support js. :(

Copy link


Copy link

Any plans to add support for --syntax=solidity?

Copy link

This is really helpful, thanks a lot. However, I can not get background color working, with canvas setting. Any suggestion?

Copy link

Very nice, thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment