Skip to content

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-

@mazuhl
Copy link

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
}

@QuatschSalat
Copy link

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

@backflip
Copy link

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

@lrytz
Copy link

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

@zangbianxuegu
Copy link

zangbianxuegu commented Aug 23, 2015

highlight: Could not read input file:

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

@prodis
Copy link

prodis commented Dec 6, 2015

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

@cksachdev
Copy link

cksachdev commented Dec 8, 2015

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

@M2shad0w
Copy link

M2shad0w commented Dec 28, 2015

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

@freak4pc
Copy link

freak4pc commented Jan 12, 2016

Anyone has ideas for ES6 support ?

@mcspronko
Copy link

mcspronko commented Feb 7, 2016

Thanks for advice. Works perfect for my slides.

@satblip
Copy link

satblip commented Feb 10, 2016

Thanks for the share!

@gregberger
Copy link

gregberger commented 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

@fancymax
Copy link

fancymax commented Jul 5, 2016

Thanks,very helpful~

@AlexanderTserkovniy
Copy link

AlexanderTserkovniy commented Jul 26, 2016

Amazing!

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

@gyzerok
Copy link

gyzerok commented Feb 21, 2017

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

@sparanoid
Copy link

sparanoid commented Mar 20, 2017

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

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

@xiaoronglv
Copy link

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
Copy link

sfletche commented Jan 13, 2018

Any solutions for highlighting jsx code?

@nitish24p
Copy link

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

@EdgarOrtegaRamirez
Copy link

EdgarOrtegaRamirez commented Aug 23, 2018

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

Notes:

  • 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

@javadba
Copy link

javadba commented Oct 12, 2018

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

@LeeYunhang
Copy link

LeeYunhang commented Dec 1, 2018

It seems does not support js. :(

@taizilongxu
Copy link

taizilongxu commented Dec 6, 2018

👍

@paulrberg
Copy link

paulrberg commented Sep 3, 2019

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

@iknownothing
Copy link

iknownothing commented Mar 12, 2020

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

@christoph-daehne
Copy link

christoph-daehne commented Sep 15, 2020

Very nice, thanks

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