Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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-

@pmoran

This comment has been minimized.

Show comment
Hide comment
@pmoran

pmoran Jan 18, 2012

Perfect - thanks! (Google indexed within 6 hours too). fyi I had to 'brew update' to avoid boost SHA mismatch error.

pmoran commented Jan 18, 2012

Perfect - thanks! (Google indexed within 6 hours too). fyi I had to 'brew update' to avoid boost SHA mismatch error.

@snookca

This comment has been minimized.

Show comment
Hide comment
@snookca

snookca Sep 21, 2012

Also: "pbpaste | highlight --syntax=js -O rtf | pbcopy" I'll have to set this up as an alias to quickly run a few things through the highlighter.

snookca commented Sep 21, 2012

Also: "pbpaste | highlight --syntax=js -O rtf | pbcopy" I'll have to set this up as an alias to quickly run a few things through the highlighter.

@h2rd

This comment has been minimized.

Show comment
Hide comment
@h2rd

h2rd Feb 3, 2013

it's very useful. Thanks.

h2rd commented Feb 3, 2013

it's very useful. Thanks.

@felixyz

This comment has been minimized.

Show comment
Hide comment
@felixyz

felixyz May 29, 2013

Great tool! Here's just a dump of the params I use, in case it helps/inspires anyone:

highlight -O rtf highlight.rb --line-numbers --font-size 24 --font Inconsolata --style solarized-dark -W -J 50 -j 3 --src-lang ruby | pbcopy

felixyz commented May 29, 2013

Great tool! Here's just a dump of the params I use, in case it helps/inspires anyone:

highlight -O rtf highlight.rb --line-numbers --font-size 24 --font Inconsolata --style solarized-dark -W -J 50 -j 3 --src-lang ruby | pbcopy

@aoberoi

This comment has been minimized.

Show comment
Hide comment
@aoberoi

aoberoi Sep 5, 2013

I noticed that you lose the background color of the theme from highlight, is there any way to keep that?

aoberoi commented Sep 5, 2013

I noticed that you lose the background color of the theme from highlight, is there any way to keep that?

@mikeyp

This comment has been minimized.

Show comment
Hide comment
@mikeyp

mikeyp Sep 24, 2013

I use pygments instead of highlight, which is easy to install via python. With that in place you can use an Applescript like this: http://apple.stackexchange.com/questions/94222/how-to-get-automator-to-treat-text-as-rtf/94246#94246.

I have that in my Pages (could be Keynote) scripts folder and then I enabled the scripts menu. Now I just select the text I want to format and hit a menu item and it highlights it for me!

mikeyp commented Sep 24, 2013

I use pygments instead of highlight, which is easy to install via python. With that in place you can use an Applescript like this: http://apple.stackexchange.com/questions/94222/how-to-get-automator-to-treat-text-as-rtf/94246#94246.

I have that in my Pages (could be Keynote) scripts folder and then I enabled the scripts menu. Now I just select the text I want to format and hit a menu item and it highlights it for me!

@proteneer

This comment has been minimized.

Show comment
Hide comment
@proteneer

proteneer Oct 28, 2013

What do you do when you can't brew install to /usr/local/ (the default location in python) and you don't want to install something like anaconda?

edit - well fml didnt realize this required boost. there goes an hour.

What do you do when you can't brew install to /usr/local/ (the default location in python) and you don't want to install something like anaconda?

edit - well fml didnt realize this required boost. there goes an hour.

@proteneer

This comment has been minimized.

Show comment
Hide comment
@proteneer

proteneer Oct 28, 2013

does this work on mavericks?

does this work on mavericks?

@oytuneren

This comment has been minimized.

Show comment
Hide comment
@oytuneren

oytuneren Oct 31, 2013

Yes it works on mavericks too. Thank you for sharing.

Yes it works on mavericks too. Thank you for sharing.

@derek

This comment has been minimized.

Show comment
Hide comment
@derek

derek Nov 1, 2013

If anyone needs it, here's the documentation for Highlight, http://www.andre-simon.de/doku/highlight/en/highlight.html

Very useful gist. Thanks for posting.

derek commented Nov 1, 2013

If anyone needs it, here's the documentation for Highlight, http://www.andre-simon.de/doku/highlight/en/highlight.html

Very useful gist. Thanks for posting.

@rafarocha

This comment has been minimized.

Show comment
Hide comment
@rafarocha

rafarocha Nov 12, 2013

for slides black background preferred theme anotherdark. which font style cool guys recommend?

for slides black background preferred theme anotherdark. which font style cool guys recommend?

@hadifarnoud

This comment has been minimized.

Show comment
Hide comment
@hadifarnoud

hadifarnoud Feb 18, 2014

@snookca how do you add your filename in there?

@snookca how do you add your filename in there?

@jongkwang

This comment has been minimized.

Show comment
Hide comment
@jongkwang

jongkwang Feb 24, 2014

Oh... very great!!
thank you.

Oh... very great!!
thank you.

@simono

This comment has been minimized.

Show comment
Hide comment
@simono

simono Mar 6, 2014

Here's my version, using Pygments https://gist.github.com/simono/9379347

simono commented Mar 6, 2014

Here's my version, using Pygments https://gist.github.com/simono/9379347

@denvazh

This comment has been minimized.

Show comment
Hide comment
@denvazh

denvazh Mar 12, 2014

This is really useful gist!
Thank you very much for sharing/posting it.

denvazh commented Mar 12, 2014

This is really useful gist!
Thank you very much for sharing/posting it.

@reterVision

This comment has been minimized.

Show comment
Hide comment

Awesome!

@mazuhl

This comment has been minimized.

Show comment
Hide comment
@mazuhl

mazuhl Apr 8, 2014

@hadifarnoud this one works with the filename or clipboard. Put the code in your .bash_profile.

Following on from @snookca and @felixyz you can enter the syntax on the command line and either copy from the clipboard (light js) or pass a filename too (light js func.js).

function light() {
  if [ -z "$2" ]
    then src="pbpaste"
  else
    src="cat $2"
  fi
  $src | highlight -O rtf --syntax $1 --font Inconsolata --style solarized-dark --font-size 24 | pbcopy
}

mazuhl commented Apr 8, 2014

@hadifarnoud this one works with the filename or clipboard. Put the code in your .bash_profile.

Following on from @snookca and @felixyz you can enter the syntax on the command line and either copy from the clipboard (light js) or pass a filename too (light js func.js).

function light() {
  if [ -z "$2" ]
    then src="pbpaste"
  else
    src="cat $2"
  fi
  $src | highlight -O rtf --syntax $1 --font Inconsolata --style solarized-dark --font-size 24 | pbcopy
}
@Chinchilla86

This comment has been minimized.

Show comment
Hide comment
@Chinchilla86

Chinchilla86 Apr 29, 2014

For me it works when I copy & paste some code directly from Xcode to TextEdit.
Also it is possible to create a textfield in Pages or Keynote and paste the code in it.
Tested on Mac OS X 10.9.1 with Xcode 5.1, Keynote 6.2 and Pages 5.2.

For me it works when I copy & paste some code directly from Xcode to TextEdit.
Also it is possible to create a textfield in Pages or Keynote and paste the code in it.
Tested on Mac OS X 10.9.1 with Xcode 5.1, Keynote 6.2 and Pages 5.2.

@backflip

This comment has been minimized.

Show comment
Hide comment
@backflip

backflip May 31, 2014

If you want to use Alfred to format code from the clipboard (based on @mazuhl's comment above): https://dl.dropboxusercontent.com/u/1806977/Highlight%20Code.alfredworkflow

In case it doesn't work: Make sure $PATH is set accordingly. Alfred apparently does not know about your $PATH, that's why the workflow starts with export PATH=$PATH:/usr/local/bin. However, if highlight is on a different path, this has to be changed.

If you want to use Alfred to format code from the clipboard (based on @mazuhl's comment above): https://dl.dropboxusercontent.com/u/1806977/Highlight%20Code.alfredworkflow

In case it doesn't work: Make sure $PATH is set accordingly. Alfred apparently does not know about your $PATH, that's why the workflow starts with export PATH=$PATH:/usr/local/bin. However, if highlight is on a different path, this has to be changed.

@lrytz

This comment has been minimized.

Show comment
Hide comment
@lrytz

lrytz Nov 8, 2014

Here's how to set up a keyboard shortcut to highlight the current selection directly within Keynote: https://gist.github.com/lrytz/d82c1adf7337a4cecace

lrytz commented Nov 8, 2014

Here's how to set up a keyboard shortcut to highlight the current selection directly within Keynote: https://gist.github.com/lrytz/d82c1adf7337a4cecace

@nikcorg

This comment has been minimized.

Show comment
Hide comment
@nikcorg

nikcorg 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

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

@zangbianxuegu

This comment has been minimized.

Show comment
Hide comment
@zangbianxuegu

zangbianxuegu Aug 23, 2015

highlight: Could not read input file:

highlight: Could not read input file:

@lkuper

This comment has been minimized.

Show comment
Hide comment
@lkuper

lkuper 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.

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.

@prodis

This comment has been minimized.

Show comment
Hide comment
@prodis

prodis Dec 6, 2015

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

prodis commented Dec 6, 2015

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

@cksachdev

This comment has been minimized.

Show comment
Hide comment
@cksachdev

cksachdev Dec 8, 2015

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

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

@M2shad0w

This comment has been minimized.

Show comment
Hide comment
@M2shad0w

M2shad0w Dec 28, 2015

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

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

@freak4pc

This comment has been minimized.

Show comment
Hide comment
@freak4pc

freak4pc Jan 12, 2016

Anyone has ideas for ES6 support ?

Anyone has ideas for ES6 support ?

@mcspronko

This comment has been minimized.

Show comment
Hide comment
@mcspronko

mcspronko Feb 7, 2016

Thanks for advice. Works perfect for my slides.

Thanks for advice. Works perfect for my slides.

@satblip

This comment has been minimized.

Show comment
Hide comment
@satblip

satblip Feb 10, 2016

Thanks for the share!

satblip commented Feb 10, 2016

Thanks for the share!

@gregberger

This comment has been minimized.

Show comment
Hide comment
@gregberger

gregberger Mar 1, 2016

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

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

@fancymax

This comment has been minimized.

Show comment
Hide comment
@fancymax

fancymax Jul 5, 2016

Thanks,very helpful~

fancymax commented Jul 5, 2016

Thanks,very helpful~

@AlexanderTserkovniy

This comment has been minimized.

Show comment
Hide comment

Amazing!

@cblanc

This comment has been minimized.

Show comment
Hide comment
@cblanc

cblanc 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

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
@gyzerok

This comment has been minimized.

Show comment
Hide comment
@gyzerok

gyzerok Feb 21, 2017

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

gyzerok commented Feb 21, 2017

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

@sparanoid

This comment has been minimized.

Show comment
Hide comment
@sparanoid

sparanoid Mar 20, 2017

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

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

@rkettelerij

This comment has been minimized.

Show comment
Hide comment
@rkettelerij

rkettelerij 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)

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)

@xiaoronglv

This comment has been minimized.

Show comment
Hide comment
@xiaoronglv

xiaoronglv Aug 23, 2017

why are background color missed ?

image

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

xiaoronglv commented Aug 23, 2017

why are background color missed ?

image

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
@sfletche

This comment has been minimized.

Show comment
Hide comment
@sfletche

sfletche Jan 13, 2018

Any solutions for highlighting jsx code?

Any solutions for highlighting jsx code?

@nitish24p

This comment has been minimized.

Show comment
Hide comment
@nitish24p

nitish24p Mar 13, 2018

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..

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..

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