Remix.run Logo
arboles a day ago

Does Org have a mechanism for escaping its own syntax? Last time I searched, to type *this* (keeping the asterisks) you had to insert a zero-width space (U+200B). In markdown you just escape them with \*this\*.

adityaathalye a day ago | parent | next [-]

Yeah escaping can be annoying.

I've used the following, in addition to the "escape character" method (which is officially documented as the other commenter noted):

For in-line escaping, I use tilde-blocks ~ ~ ... as in ~~ . This type-sets in monospace (code format) in exports, which usually* is what one wants anyway, viz. to demarcate the symbol as being symbolised.

For non-code text blocks, "Literal Example" https://orgmode.org/manual/Literal-Examples.html This also gets typeset in monospace, in exports.

For special symbols, LaTeX-like syntax https://orgmode.org/manual/Special-Symbols.html

arboles a day ago | parent [-]

This summary is definitely useful as I'm myself a user of Org. I still think backslash escaping doesn't get to be annoying, and is a simple algorithm, which is important when you want to paste text into your org documents from other sources.

You can keep these tricks in mind while writing, but sometimes it's not you doing the writing. It could be pasted text, it could be a machine writing.

1313ed01 a day ago | parent | prev | next [-]

Did you edit your comment? I was about to begin by saying I could not see how you escaped that, but now I see the backslashes.

Looks like even the documentation for org-mode recommends using zero-width spaces: https://orgmode.org/manual/Escape-Character.html

I think org-mode was never primarily about its rendered output. Most users probably, like me, spend a lot of time (hours every day) in various org-mode documents, staring at what is essentially the raw mark-up. Org-mode in Emacs makes only a few minor changes to how the text is displayed, like hiding link targets, so you rarely look at the output. I export less than 1% of my org documents, so usually I don't care at all about what formatting renders like, as long as I get the mark-up correct enough that org-mode itself is functional (links can be followed, sections collapsed etc). The few documents I do want to export I can imagine using workarounds like the zero-width spaces, but it is not like there is often a need to have things looking like org-mode mark-up in the output.

For me at least, worrying about escaping mark-up would be too distracting and just add noise, as the raw mark-up is what I will read anyway. But I think some good way to escape things would not be a bad thing to have.

BTW there are verbatim blocks that can be used when you have entire lines of non-org content. And of course src-blocks. But that obviously does not handle every case escapes could be useful.

arboles a day ago | parent [-]

That was some bad luck. I made an edit seconds after the post came rendered to get the formatting right. (On HN I expected to have to type \\\* to render \* but you just have to type \\*)

I understand your use case, I just think it makes it not worthy of comparisons to markdown.

skeledrew a day ago | parent | prev [-]

What's the use case for escaping its syntax? At top level it's just an arbitrarily nested list.

arboles a day ago | parent | next [-]

So you can type *word* without it becoming bold? So an article can contain: "The logs come to about ~300 lines once you start the server with ~systemctl start fnord~"

The `code` equivalent in Org is ~code~. How do you type that without the Org highlighting removing the ~ from "~300 lines", thinking that the code snippet begins there? This is an example I got from grepping my org files for U+200B.

org3 a day ago | parent | next [-]

I wasn't sure how to do this, so I looked into it:

If you (setq org-pretty-entities t) below will render correctly in org buffers, and exports correctly too.

The logs come to about \tilde{}300 lines once you start the server with ~systemctl start fnord~

Here's a star: \ast

skeledrew a day ago | parent | prev [-]

I see. Just gave it a try and backslash works as escape. Though also I'm probably unlikely to experience such issues myself as my Emacs theme shows formatting characters even after applying the formatting.

arboles a day ago | parent [-]

The following:

  \~300 lines
Still exports as <p>\~300 lines</p> (in case of an HTML export). In fact you could "escape it" with any character, the backslash isn't doing anything special, the formatting just doesn't trigger if there's no white space on one side. When I use Org I also do not have auto-formatting, as you do, but the highlighting would still be wrong. And it'd be masochistic to put up with that unless you've invested a lot into Org for other reasons.
skeledrew 21 hours ago | parent [-]

Sounds to me like it's a shortcoming of the exporter then, to not remove the escape characters as appropriate. Though one would think others would've run into this issue and fixed it. Or perhaps you're missing some other prevalent alternative?

The highlighting corrects for me once I "escape" the "~300".

arboles 21 hours ago | parent [-]

You didn't understand me. The highlighting also disappears if you "escape" with %

  %~300 
Or the character A:

  A~300
skeledrew 15 hours ago | parent [-]

Isn't the aim to have the highlighting only apply to `~systemctl start fnord~`, and not have whatever you used to escape the "~300" appear in an export? Highlighting and exporting are 2 pretty distinct functions.

fipar a day ago | parent | prev | next [-]

I use org a lot, in fact, it's my daily driver. I also have to deal with MySQL, and, if using the vertical output (what you get if you finish a query with '\G' instead of ';' it makes pasting into an org file a pain.

Sure, not a big pain, I just wrapped it in a function paste-from-mysql that appends the whitespace, but then I need to take out the whitespace of I want to paste that somewhere else. It would be nice to have org support some sort of 'do not interpret what comes next' block markers. I guess someone with enough time and skills could make this change but, alas, that's not me.

skeledrew a day ago | parent [-]

Have you tried literal examples?

https://orgmode.org/manual/Literal-Examples.html

fipar 19 hours ago | parent [-]

Thanks! I had actually seen that, but didn't realize that org does remove the leading comma when you extract a block to paste it somewhere else, which is great, because it means I need one less function.

Now I just need to keep my paste function, but have it add a leading comma instead of a space, and I need to use example instead of src (not a problem for this use case since, even though I normally paste them into sql src blocks, the syntax highlighting isn't that useful.

You gave me a nice little task for a rainy day, thanks :)

imiric a day ago | parent | prev [-]

In an Org document that contains Org examples (e.g. if this article had been written in Org), even Emacs gets confused about rendering it. So you might find that sections in example text are evaluated as being part of top-level sections and collapsing is wonky, etc.

I run into this a lot with gptel. I use a main Org file for all my daily notes, and since gptel streams LLM output as Org (which is good), it conflicts with my main file. I have a post-processing function that converts headings into `#` to avoid this, but it's a hack I'd rather not do.

skeledrew a day ago | parent | next [-]

Hmm I'm still not seeing the issue. Why aren't the examples just lists under say an examples header? Or the LLM output? Maybe gptel is expecting output to be in a fresh file or at the top level? It should be a trivial fix to intent a level before inserting.

arboles a day ago | parent | prev [-]

Karl Voit writes their articles in Org though, it even says so on the footer.