Since leaving Oracle I’ve been hard at work on Marked 3, and holy cow it’s a huge update.
I expect to have the beta out in the next week or two. When it’s ready it will be available as a subscription directly via Paddle or the Mac App Store, and all Setapp users will get it as part of their subscription.
There’s a new website up at markedapp.com, though none of download links will work. Soon, though.
I decided to go with subscription pricing because I want to support continuous development. I haven’t charged an upgrade price for almost a decade, so people who paid $10 for the app 10 years ago have gotten all of the improvements for free for years. That’s not sustainable for me, and subscriptions mean I don’t have to release a new app every year, but rather just constantly improve on it.
Here are some of the highlights that I think make Marked 3 worth paying for. (Marked 2 will continue to function but won’t get any more updates.)
Custom Rules
The new Custom Rules setup replaces the old Custom Preprocessor and Custom Processor settings. The old way only allowed one of each, and your only option was to manually enable it or disable it. Now you can have multiple processors that activate automatically based on criterium like file extension, metadata type, or even content detected in the document (regex available!).
Drag and drop a file onto the rules editor to see what rules it triggers
Select a built-in processor for each rule match
Many built-in transforms and actions, including search and replace, fix header heirarchy, etc.
Run multiple scripts/commands (custom pre/processors) in sequence
Inject JavaScript, text, or HTML
Set a style for a particular file type
and more!
New Processors
I’ve added CommonMark (with GFM extensions) as a default processor, which brings full compatibility with other apps that use CommonMark, such as Bear.
I also added Kramdown, my personal favorite processor. It’s 99% compatible with MultiMarkdown syntax, and its major draw for me is IALs, a special syntax that can apply CSS classes to any element.
DOCX madness
Marked 2’s DOCX export was terrible. It basically just output rich text content into a DOCX container, with no structural information. I’ve completely rewritten the DOCX export from the ground up. Not only can Marked 3 output perfect DOCX files with a variety of styling options, it can also open most DOCX files and export them to other formats.
Export clean DOCX with correct structure and built-in styles
Bi-directional MathML to OMML (Word)
Convert comments and change tracking to CriticMarkup (also bi-directional)
Add your own export styles
Handle DOCX highlights, using a <mark> tag with appropriate background color
Syntax highlighting in code blocks is preserved when exporting to Word
Open DOCX directly in Marked
In DOCX import, allow highlights to be suppressed when comments are disabled
Export Profiles
Because the export settings are so vast, I’ve added “Export Profiles.” These allow you to save current settings as a profile, making it easy to switch between settings at export time. Every type of export has a dropdown in the save dialog for selecting a profile. You can use it for something as simple as setting a different header logo for different contexts, or for completely different export settings like page margins, markdown link styles, and anything else that affects any of the export formats.
As part of setting this up, I refactored all of the export code to allow for future automation (AppleScript, Shortcuts). Previously Marked couldn’t bypass the Save dialog, and all of the export functionality was tied to callbacks. Now it’s separate and can be called externally. I’m partially finished with AppleScript support for things like tell app "Marked" to export markdown to PATH with profile "Work". Still working out the syntax and I’ve run into some showstoppers on that, but once I get this release out I’ll get back to working on that. All of this will also be applied to Shortcuts actions and the URL handler.
Paginated PDF magic
Marked used to rely on the macOS print system to generate PDFs, which is basically the same as opening an HTML file in Safari and printing to PDF (with a few niceties like customizable headers and footers). I completely rewrote this in Marked 3, which builds the PDF manually, allowing for much more control.
Logos/images in headers and footers
Footnotes can appear on the page on which they’re referenced
Current heading/section in headers and footers
Intra-document links work (navigation anchors, Table of Contents)
New export formats
EPUB with full styling, cover image, and metadata
TextBundle/TextPack with embedded assets, fully compatible with apps like Ulysses
Improved RTF export. If you’re trying to open in Pages, it’s better to export a DOCX and open that, but if you’re trying to get rich text into another app, the improved RTF handling will be useful.
Markdown Dingus
Experiment with Marked’s different built-in processors and see live rendering of both source code and web preview.
Style Stealer
Load any web page you like the look of and replicate its styling as a Marked Custom Style. The Style Stealer window accepts a URL, preferably an article/post page with plenty of content, and allows you to hover and click on the main content area of the page. It will grab the styles for existing elements and inject and read any that are missing, getting their computed style (the result of all CSS applied to the page).
It even does a decent job of grabbing custom fonts, including Google Web Fonts.
And more…
Allow user to specify minimum level to include in table of contents
Display comments (CriticMarkup, Scrivener, Word) in a sidebar instead of inline
[[Wiki Link]] navigation
Fully functional back/forward navigation when following links to other Markdown files
Make missing file links clickable to create a new file
Show wiki backlinks to current document
Autoscroll now works with a WPM (words per minute) setting, and calculates how many words would fit on the screen with the current style, setting the scroll speed accordingly
Remove RTFD export option. RTFD will be automatically selected when the export includes images
Custom Processor Log changed to Custom Rules Log, showing what rules run and any errors
Change reading speed right from the detailed stats window
The rest
I might as well stick the rest of the changelog in here… there will almost definitely be more to add by the time the final release is ready, but I’m one step away from beta, so this is a pretty complete list.
NEW
Syntax highlighting for CSS and JSON fields
Custom Styles can be dragged and dropped on the Settings window to add them
Display a message when an empty file is opened
Import/Export all preferences as a JSON file
IMPROVED
Reorderable custom Styles
Button visibility in Settings
Double click to rename Custom Styles in menu
Performance improvements for lined text views
Hide advanced config options when MathJax is disabled
Ignore non-numeric values in reading speed text field
Suppress open dialog when opening a file
Scrivener import will convert single-cell tables (used for asides) into block quotes
When exporting, convert non-built-in fonts to equivalent system fonts
Better regex for detecting highlights and deletions in text
Completely rewritten Scrivener import, faster and with no reliance on Ruby or Python
Rewritten CriticMarkup handling, all native, no reliance on external scripts or tools
Detailed stats view UI adjustments
Native mmd_merge handler
Hold option to set debug logging level from the Help menu
Additional documentation about debugging and support requests
Store current autoscroll speed as a global preference instead of preview-specific value, ensuring consistent behavior across previews and maintaining preferences across launches.
Markdown export can optionally wrap text at a specified width
Markdown export can optionally convert inline links to reference links
Change default file extension for markdown export to “.md”
Clean up Markdown export, especially for Word files
Better handling when custom processors are disabled or not available
Save assets to subfolder when exporting HTML, OPML, or Markdown
Substitute Goldilocks (Bear style) for Multi-Column
Handle proper conversion of Pandoc % metadata
Make document metadata available as MD_keyname environment variables to custom Run Command and Run Embedded Script actions
Improved conversion of existing custom processor settings to the new Custom Rules format
FIXED
Help document list item link styling
Tab order in Proofreading Settings
Paragraphs generated by DOCX converter that start with <mark> not being properly handled by MultiMarkdown
Don’t strip query parameters when copying URL with right click or popup menu
Thread safe accessors for document stats
Status bar and drawer not changing to dark mode
Recognize more ways Word inconsistently marks paragraphs as headings
Handle metadata document in Scrivener binder as document metadata
Race condition on filesize
Don’t show open dialog if Welcome screen is opening
Handle MarsEdit 5 previews
Handle emphasis with internal spaces when converting HTML to Markdown