Hi Aleksandar, Thank you very much for your interesting comments. I think your idea of applying org-babel to (multi) language support is tremendously suggestive and, of course, more org-centric. I suppose it could be applied also to languages within the paragraph by inline blocks... I really liked what you propose.
Well, I admit that my marks are a bit exotic :-D. The main problem I see is that they are not as robust as Org's own marks, since they are controlled by an export filter. Doing some further tests, by the way, I think it would be better to add the filter to `org-export-filter-plain-text-functions', instead of `...final-output-functions'. I also see that it would be convenient to avoid their expansion in verbatim texts, with a `(unless (org-in-verbatim-emphasis)...)'. Anyway, I think (in general terms) it would be interesting for Org to incorporate some multilingual support and the ability to toggle between languages in a document, and the idea you propose seems to me that it makes a lot of sense. Best regards, Juan Manuel Aleksandar Dimitrov writes: > Hi Juan, > > this sounds very interesting to me, as I, too, mostly write in Org > and, sometimes write documents in multiple languages, usually with > different varieties of either Latin or Cyrillic. > > I have some suggestions: > > Apart from the export, one of my biggest gripes is > flyspell. Specifically, the fact that you have to choose one language to > spell check the entire document with. That is insufficient in my case. > > I think that the syntax you're suggesting looks good, but I'm not > sure how well it'd fit into org-mode's ecosystem. I had something in > mind that was closer to how org-babel works (it's called *babel* > for a reason, isn't it? :D) > > #+begin_src org :lang pl > … po polsku > #+end_src > > #+begin_src org :lang de > … auf deutsch > #+end_src > > > This would make use of org-mode's edit special environment function. It > would make it easier to persuade flyspell to do the right thing. You > could, perhaps, add > > #+LANGUAGE: en > > to the parent document, and then org would take care to set the correct > flyspell language (and the correct macros on LaTeX-export) and change > these parameters in the special environments. > > I'm not 100% sure it should be #+begin_src org, maybe introducing a > different special environment would be better, say #+begin_lang XX where > XX is the ISO-code of said language, or the locale (think en_US > vs. en_GB.) > > The drawback, and the clear disadvantage compared to your method is that > this works great only when the languages are separated by paragraph > breaks. > > Therefore, I think our suggestions might be somewhat orthogonal. Yours > could be a shorthand syntax for introducing inline foreign-language > snippets. > > What do you think? > > Regards, > Aleks > > Juan Manuel Macías writes: > >> Hi all, >> >> I'm curious to see how other Org users deal with multilingual documents, >> that is, those documents (for example, philology or linguistics texts) >> that contain a significant number of online quotes in other languages. >> Naturally, this makes more sense in the LaTeX backend, since it is >> convenient to enclose these quotes in a \foreignlanguage command to >> ensure that LaTeX at least apply the correct hyphenation patterns for >> words in other languages. >> >> Luckily, in the latest versions of Babel (the Babel of LaTeX) you don't >> need to do this when it comes to languages whose script is different >> from Latin (e.g. Greek, languages with Cyrillic, Arabic, Hindi, etc.). >> We can, for example, define Russian and Greek as: >> >> #+begin_src latex >> \babelprovide[onchar=ids fonts,hyphenrules=russian]{russian} >> \babelprovide[onchar=ids fonts,hyphenrules=ancientgreek]{greek} >> #+end_src >> >> And also the fonts for both languages: >> >> #+begin_src latex >> \babelfont[russian]{rm}{Linux Libertine O} >> \babelfont[greek]{rm}]{Free Serif} >> #+end_src >> >> For Latin-based scripts it is still necessary enclose the text in the >> \foreignlanguage command. And now comes the question: how do Org users >> who work in multilingual documents to obtain this command when exporting >> to Latex? >> >> I usually use macros, which always tend to work fine. But lately I have >> been testing an alternative markup system using an export filter. The >> idea would be something like: >> >> %(lang) lorem ipsum dolor %() >> >> I start from a list of the most used languages: >> >> #+begin_src emacs-lisp >> (langs '(("en" "english") >> ("fr" "french") >> ("de" "german") >> ("it" "italian") >> ("pt" "portuguese"))) >> #+end_src >> >> And other possible languages that Babel supports can be indicated >> explicitly, by prepending "--": >> >> %(fr) ... %() >> >> %(--esperanto) ... %() >> >> (If someone wants to try it, I attach a small Org document). >> >> Best regards, >> >> Juan Manuel > > -- --