1:28 AM
Does anyone know of research showing better ways of semantically naming commands? Are there preferences? Is it audience dependent?

5 hours later…
6:41 AM
5

7:31 AM
@LaTeXereXeTaL @UlrikeFischer tells me a good system is to use a consistent scheme such as \z, \zz, \zzz, \zzz, \zzzz
2
@Skillmon yay only 327,000 to go!

7:42 AM
@DavidCarlisle you could go vote for my answers (and that wouldn't be enough, I guess...) :)

@DavidCarlisle or \blubA, \blubB, \blubC

@UlrikeFischer blub

@PauloCereda fish today?

@UlrikeFischer just praticting :)

8:09 AM
6

1 hour later…
9:29 AM
@LaTeXereXeTaL It varies from person to person and field to field. I tend to use sowhat descriptive names on some macros, like \DistAs instead of \sim as X\DistAs N(0,1) makes more sense when reading the code than X\sim N(0,1). On the other han in topology one with have \isomorph as a different name for \cong

1 hour later…
10:30 AM
@UlrikeFischer Isn't Greek fun

@JosephWright Έχω το ωραίο ξύλινο άλογό μου.

@DavidCarlisle :)

10:48 AM
@JosephWright I have a bad conscience that I started this ;-). My hope is that the knowledge will be useful for other scripts and case too.

10:59 AM
@UlrikeFischer Well Greek is particularly tricky (partly I think due to some poor decisions early on in the design of Unicode)

@JosephWright I still wonder if for open type fonts this uppercase stuff is not better implemented as an open type feature.

@UlrikeFischer Well it certainly can be; there are various discussions about it. But that is much like the LGR case: you can't case-change the 'strings', which is natural in most programming languages

@JosephWright sure but strings use a quite restricted set of rules, and probably not a switch of accents between two vowels. And if there is a open type feature, one could probably add it on-the-fly with lualatex.

@UlrikeFischer The examples I've seen suggest that there is a feature, but that coverage is patchy. Dropping accents is relatively easy, so is covered better, but the hiatus business is much less well supported (I've only seen it in one font)
@UlrikeFischer I meant my starting point: people want to be able to \edef to give the 'case changed string', as that's what most languages do
@UlrikeFischer, @DavidCarlisle Not sure I've made Chris haappy!
@UlrikeFischer On teh purify busines, I guess I will need to check to avoid that error

11:26 AM
@JosephWright The only feature I can think of in that area is case, but that one is supposed to be applied only after converting to uppercase.

11:55 AM
@MarcelKrüger but we could add our own feature, couldn't we? Perhaps starting with greek is not the best idea, but say we want a font feature that does dutch uppercase (with the ij -> IJ) or german?
@JosephWright probably, but the question is which action should be done. With \pdfstringdef\hyptest{\blub{aaa}, \blub[zzz]{aaa}} hyperref leaves the arguments in the stream and issues a warning that it removed \blub twice. But \text_purify:n can not warn right? So perhaps it should insert a marker?

@UlrikeFischer Indeed, no warnings are possible by expansion (at least not clean ones: Bruno tried some stuff but it's not that clean)
@UlrikeFischer I guess this is about semantics: \text_purify:n is supposed to get 'clean' text

12:10 PM
@JosephWright perhaps it could raise some flag "token removed", that would work by expansion, wouldn't it?

@UlrikeFischer Yes, that would work: would have to be a general warning. We could look to extend into that area

12:43 PM
@JosephWright if the warning doesn't need to mention the original text the purification could use the unicode replacement character then code could warn if that was in the resulting string

@DavidCarlisle Ah, yes, that would also work

@DavidCarlisle ooh unicode ;-)

@UlrikeFischer Sure, we could do that. We could basically translate Unicode casemapping into features.

@MarcelKrüger would it be much work? I have actually no idea how many scripts know something like casemapping, and how many have tricky rules like in the greek case.

1:04 PM
@UlrikeFischer At least most cases should be easy, I will try a PoC. (The affected scripts are Latin, Greek, Coptic, Cyrillic, Glagolitic, Armenian, archaic Georgian, Deseret, and Warang Citi (according to Unicode))

@MarcelKrüger That isn't so much, but probably it need some language dependency, for the odd stuff like ij in dutch etc?

@UlrikeFischer If I remember correctly, the dutch ij should be pretty standard for upper and lowercase, right? (It is special in titlecasing though)
At the very least language dependency is needed for Turkish though.

@MarcelKrüger :)
@MarcelKrüger Oh, you wait until you look at Greek :)
@MarcelKrüger Yes
@MarcelKrüger And Lithuanian

@JosephWright And Azeri

@MarcelKrüger I just wanted to say ask Joseph ;-). I basically only know what I got from his tugboat article: tug.org/TUGboat/tb41-1/tb127wright-case.pdf

1:16 PM
@MarcelKrüger That's Turkic, so already mentioned :)
@UlrikeFischer, @MarcelKrüger Anyway, my lunch task was starting on updating Greek

@PauloCereda ooh lunch

@DavidCarlisle oh no

1:34 PM
Since today we stopped auto-completeing the ridiculous \large{...} etc. in Overleaf!
2

@yo' stick to a more noticeable \huge{...} I assume.

@yo' I am still forbidden to comment, right? :)

@PauloCereda well, if you don't mention that colourful large bird, you're fine :-)

@yo' quack :)

@DavidCarlisle oh definitely \end{lie}
@PauloCereda no worries there, ducks are not that colourful :-)

1:41 PM
@yo' LaTeX Error: \begin{chat} ended by \end{lie}.

@yo' That's great! Funny is that most things are listed as cmd, but \color[]{} is an expl3-cmd :-)
@yo' (not sure how useful that classification is, so don't pay too much attention to this :)

@yo' That's why you need them a l'orange

@PhelypeOleinik yeah, not at all probably; it definitely doesn't influence the behaviour, and frankly, most users have no idea what expl3 is :) I believe the idea was to distinguish things available by the core and things from packages, but this all predates me in Overleaf, so I don't really know. We might actually do some larger makeover of the suggestions at some moment.

@yo' Yeah, scrolling through the suggestions I can see it doesn't make much sense
@yo' You do have \expandafter{} as a suggestion though :)

@JosephWright new version of CLDR due tomorrow I see :-)

1:45 PM
@PhelypeOleinik well it can't harm ...

@UlrikeFischer A contrived way to say “do nothing” :)

@UlrikeFischer unless you meant to not write \expandafter{}\def\csname blub\endcsname

@PhelypeOleinik don't you have \expandafter{ somewhere in your code? It doesn't seem to be in our default list, so it was probably parsed from the document.

@PhelypeOleinik ;-) How do you get \expandafter? If I start to type \exp it doesn't appear

1:48 PM
@yo' Oh, does it do that? Okay, that might be the reason

@PhelypeOleinik Also, have you refreshed the browser window recently? This change is really new, likely <1h in production.
@PhelypeOleinik yep, we pick autocompletes from the document. The basic list has <100 items to start with

@PhelypeOleinik he is right, I only get it if I type somewhere \expandafter{}.

@yo' Yeah, I just opened it

@UlrikeFischer I get ^^

@DavidCarlisle that's interesting

1:50 PM
@yo' Okay, so it's picking from my code somewhere. Sorry about the noise

@PhelypeOleinik most likely. (Modulo bugs of course)

@PhelypeOleinik I get it in an more or less empty document

@DavidCarlisle the document didn't load babel, but when I add it I get it too.

@yo' I must confess I use Overleaf as a test area for older TeXLive (TL 14, 16, and 17, which I don't have locally installed :-), so it gets weird code sometimes

@PhelypeOleinik yep, could be that. I just tried and I don't get it at all, so should be fine.

1:52 PM
@UlrikeFischer well that's you. Natural linguists like me always have babel (or in this case marathi) loaded.

@DavidCarlisle Indeed, it seems to read packages... I wonder what it would get out of xii.tex

@UlrikeFischer that's less than optimal, actually. But probably comes from us parsing the code for the packages and seeing \expandafter\def\expandafter or alike somewhere in the code of the package. Unfortunately, there's no good approach to this :-(

@DavidCarlisle well my MWE try to be minimal ;-), but beside this "babel-cmd" was a quite good clue.
@yo' but why does it pick up \expandafter as a package command and not e.g. \hbox or \catcode or \def?

@UlrikeFischer I believe we parse for \\(def|newcommand\*?)\\([A-Za-z]+)

@yo' ah yes.

1:59 PM
So \expandafter is special as it probably appears after \def somewhere (what a surprise...)
We could probably blacklist it, but I believe it's the only special thing, and as noted above, this one won't produce stupid code like \large{...} does.

@DavidCarlisle Yes?

well, \noexpand might be a second such one, but again, that's a TeXpert thing.

2:33 PM

@DavidCarlisle Doesn't sound like I need to worry!

2:48 PM
@DavidCarlisle @UlrikeFischer Yeah I'll get right on that!
@daleif Thank you!

@LaTeXereXeTaL we try to be helpful

3:06 PM
@UlrikeFischer, @DavidCarlisle I have the hiatus stuff nearly working, just one or two edge cases, then have to pick off one or two more things - I think I might have the Unicode version fully-compliant today
@UlrikeFischer, @DavidCarlisle Really does leave me in a bind about 8-bit though; it's going to be tough to do all the look-aheads, and I still don't know how to handle LGR

@JosephWright then I would leave it, at least for now. I mean people can always simply type in uppercase, so a macro solution is not absolutely required, only nice. But out of curiousity: would it be easier if greek wouldn't use LGR but another, "better" 8-bit font encoding?

3:21 PM
@UlrikeFischer Not really :)
@UlrikeFischer The thing that's hard is any transliterated input, not the font encoding at the output stage. I can manage (with some effort) any inpuenc-based input as it's just a question of looking at the bytes. But transliteration requires knowing that a = ...

Bad code, a TeX song parody of "Mad world". Warning: terrible singing follows. vimeo.com/470631624
10

@JosephWright I wouldn't care about transliteration. I assume that everyone who really typesets greek uses greek letters. But if someone really needs uppercasing on a transliteration, they could apply some regex to replace the a with alpha first, not expandable but probably good enough in most cases.

3:37 PM
@UlrikeFischer Well yes, I agree - I think also they are likely today to be using Unicode not 8-bit, but there are still updates by Günter ...

@PauloCereda This is so great!

@yo' awww thanks <3

@JosephWright well I guess there are still people using pdflatex and LGR for the same reason we still use it: it is fast and works. But I doubt that many people will use Geiá sou Kósme instead of Γειά σου Κόσμε in the input, even if the output is the same.

3:56 PM
@UlrikeFischer Well yes
@UlrikeFischer Let me finish Unicode then I'll see how much coverage I can squeeze in for 8-bit without going totally nuts (I haven't set up NFD, which will be ... interesting)
@UlrikeFischer Probably need some 'real world' Greek inputs

@JosephWright looking at the newest questions with "greek" on the site, I would say around 50%-50%, but it is probably biased, as we probably get more of "english with a bit greek" and less "everything greek".

@UlrikeFischer That's one aspect in my mind: critical edition stuff will be using Greek but not in Greek, whereas native Greek texts are different
Reposting here just in case
I could do with some examples of 'real world' Greek input for LaTeX - do people still mainly use LGR and pdfTeX, or have they moved to Unicode engines?

4:21 PM
@PauloCereda My first poll on Twitter!

@JosephWright cool!

4:35 PM
@UlrikeFischer Also support. ArXiv needs pdflatex, and I suspect a lot of scientific publishers do as well.

@Canageek I doubt there is much Greek text on arXiv

@PauloCereda You're getting some positive reactions in the Overleaf team too! (Including from Paul!)

@yo' awww <3
ooh Paul McCartney Gessler

4:55 PM

@PauloCereda Wow! That is awesome! Is the text available somewhere?

@LaTeXereXeTaL @DavidCarlisle Nice to see contrarian views around here. :)

5:18 PM
Jan 21 at 14:31, by Paulo Cereda
@AlanMunn you are mean

5:38 PM
@AlanMunn @DavidCarlisle Do I sense a bit of sarcasm?

@LaTeXereXeTaL No, just long running banter.
@LaTeXereXeTaL The "you are mean" meme in chat has been running since 2011. Like TeX itself, we value backwards compatibility.
2

I think I would fit in nicely in the official TeX/LaTeX office.
I like ducks. I like East Enders too.

6:11 PM
@LaTeXereXeTaL Ducks are nice. Don't know about East Enders though. But I like your username. Is it the Mexican god of typesetting? :p

@Plergux THAT...is funny.
@Plergux I have a list of (fake) Greek gods on my website if you're interested.

6:37 PM
@LaTeXereXeTaL Lol, thanks. A list of fake Greek gods sounds divine :p Love that kind of stuff :D

@Plergux Okay, but definitely not safe for work. LOL sticksandshadows.net/greek/index.html
Hate to say it, but I guess I need to learn to use keyvals.

@LaTeXereXeTaL keyvals in TeX or generally, and if in TeX, restricted to keyval or key=value parsers in general? (Disclaimer: I'd love to capture me some new users for my key=value parser)

6:53 PM
@Skillmon To use them in my own LaTeX code to pass options to macros. (Hope I used the correct terminology there.)

@LaTeXereXeTaL sounds about right (terminology wise).

@Skillmon And to load my package with desired options.

Honestly, I'm not sure.
@Skillmon I'm using \newcommand* and \NewDocumentCommand for most of them.

@LaTeXereXeTaL Please be aware that package options have some restrictions on what can be used in them (the LaTeX kernels handling of options is suboptimal to say the least, options can't contain braces for example).

6:57 PM
@Skillmon I'm thinking something like \usepackage[vectors=bold]{mandi}

@LaTeXereXeTaL the question is whether they should expand fully in an expansion context (so inside of \edef or \message, or while they are written to another file). Most things don't have to necessarily be expandable (and very few things have to be expandable), for everything else this is just a contest TeX programmers seem to enjoy (writing stuff expandably).
@LaTeXereXeTaL that would be fine.

@Skillmon To my knowledge, they're not expandable. At least I haven't intentionally tried to make them expandable.

@LaTeXereXeTaL oh, goodness. I don't think I've laughed so much in years. My favourite is definitely Johncleese, close second Articles and Tenticles/Testicles (those two are about equal, and close if you are into a certain kind of japanese stuff :þ). Then again, I am very easily amused. My favourite joke in the whole world is: Q: What is brown and sticky? A: A stick. XD

@LaTeXereXeTaL I think we have a thread about available options to key=value parsers (make sure to stay an arms length away from anything some ominous user commented below that one shouldn't use that specific package). And if you want to make a small rabbit happy, you could try expkv (and friends) as your key=value solution (though it isn't the most feature rich possibility out there).
@LaTeXereXeTaL Well, if they were you only had two options (and only one of which would be user-friendly, keep in mind, you are the user here). Now you have all the options you want (I'd say use one of pgfkeys, l3keys, or expkv, the last one is the fastest of these (and mine), l3keys probably the most robust while providing many features, and pgfkeys the most feature rich, though it has two bugs).

@Plergux One day I got an email from a lawyer who told me his son (in high school) had stumbled onto my page and was researching Greek gods for a research paper. I thought I was about to be sued for causing his son to get an F, but he said they both had a good laugh!

7:06 PM
@samcarter_is_at_topanswers.xyz Thanks <3 I can post the lyrics:
All around me are familiar warnings
underfull boxes, underfull boxes
Metric file happens to be missing
Char is not set up for use with LaTeX
Wrong encoding, wrong encoding
An incomplete intermediate file
Runaway argument, runaway argument
Too much closing brackets being reported
Extra \endgroup, extra \endgroup
And I find it kinda funny, I find it kinda sad
I find it hard to tell you, I find it hard to take
When people ask a question it's a very very
3

@LaTeXereXeTaL you have some doublets in that list.

@Skillmon I've bookmarked that thread. The only one I've experimented with thus far is keyval.

@LaTeXereXeTaL well, the UI of expkv on its own is pretty close to keyval (but it gets better with expkv-def, expkv-cs, and expkv-opt)

@LaTeXereXeTaL "the original and best" as @Skillmon would call it

@DavidCarlisle I'd call it the original and fastest, which are objective statements, the "best" is debatable. But it is the most bug-free one (it only has two well-hidden undocumented features).

7:17 PM
I agree with @DavidCarlisle.

@LaTeXereXeTaL there are some drawbacks on being first (and written when memory was critically tight) there are some features you may not want, but the main issue if you want to use key=val in package options as opposed to a separate \mandisetup{a=b,x=y} is that the core option handling agressively normalises the option list and typically breaks values (everything passed through an edef and spaces and some braces removed (there is a plan to fix that but it's tricky)

@DavidCarlisle I hadn't thought about a \mandisetup facility. That may be cool.

@LaTeXereXeTaL it's best to have that eg hyperref allows \usepackage[this=that]{hyperref} but if quoting spaces and fragile commands is painful you can use \usepackage{hyperref} \hypersetup{this=that} which is the same thing but the package can control the processing completely unlike the the option handler

@LaTeXereXeTaL The only need to have package options if is they are strictly load-time-only, otherwise they are a recipe for option clashes

7:34 PM
@JosephWright This.

@JosephWright I left a couple of messages in Skype, sorry for the delay in replying...

@JosephWright and the issues with the normalisation mentioned by @DavidCarlisle (and hinted at by myself already).
@LaTeXereXeTaL it certainly isn't the worst, that I can assure you :)

@PauloCereda Never a problem
@Skillmon I can imagine the candidates

@LaTeXereXeTaL Well, I certainly had a good laugh. Thank you. :D

@LaTeXereXeTaL I like the god Diabetes.

7:43 PM
I'm helping a physics student with her LaTeX assignment!
@Plergux I have more to add that a friend sent me over the summer.

@LaTeXereXeTaL Cool :D I'll bookmark it :p
@LaTeXereXeTaL or, you know, just leave it open in one of my three browsers and two hundred tabs I've got open at any given time XD

@Plergux Hey, someone who is like me (though I don't use three browsers, just the hundreds of tabs):)

@Plergux Well I'm glad I could make someone laugh! (other than by looking at my code)
@DavidCarlisle I think I'll try that.

7:59 PM
@LaTeXereXeTaL Ah, then you do want them in the \usepackage line

@JosephWright As opposed to a \mandisetup{...}

@LaTeXereXeTaL Indeed: that form implies there are options the user can change during runtime

@JosephWright Ahhhhh that's good to know.

@LaTeXereXeTaL Basically, if \usepackage[foo]{wibble} fixes stuff that the user cannot then change at all, it's 'right' as they have to make one choice

@JosephWright And I try to make intelligent defaults to minimize the need for options in the first place.

8:06 PM
@PauloCereda Thank you <3

8:39 PM
Since the rules of \endinput can be a bit confusing, would a usage such as \begingroup\aftergroup\endinput\endgroup (with \aftergroup\endinput on its own in the line) work as expected?

@Skillmon if you expect the right thing, yes (but why)

@DavidCarlisle Thank you :) Well, basically testing whether a primitive is available by comparing \meaning and \string in a scope, throwing an error if they match and ending the input after that group. Seems cleaner than a bunch of \expandafter.

@Skillmon \aftergroup\endinput being on its line not important, what makes a difference is if anything on the line after \endgroup

@Skillmon Whoop whoop! :p My computer is usually just a collection of mini-chaoses :p Except my desktop. Nothing goes on my desktop except a wallpaper. Ever. :p

@DavidCarlisle ok, I wasn't sure about the first part of this.

8:43 PM
@LaTeXereXeTaL Well, laughing is always preferable to crying, I find. :p

@Plergux My computer is actually pretty well-structured, and even my browser is sort of, but I can't help but keeping hundreds of tabs.

@Skillmon and hope no-one did \let\meaning\string before that:-)

@DavidCarlisle Well, you can never be sure in a system like TeX, but I think that this is a good test for the availability of a primitve (do you know a better one?)

@Skillmon it's a shame \primitive is such a useless primitive, why can't you test \expandafter\ifx\primitive\expanded\expanded

@DavidCarlisle (I could try to detect whether I'm in LuaTeX or pdfTeX and use \ifprimitive/\ifpdfprimitive accordingly, I know)
@DavidCarlisle and if someone did indeed \let\meaning\string he deserves no sympathy!

8:48 PM
@Skillmon oh Id forgotten about that yes that works unlike my \primitive sketch
@Skillmon or \catcodej=0 jcatcodej\=12 ...\meaning...

@DavidCarlisle well, but then we're just at the same point again, how do I detect whether \ifprimitive or \ifpdfprimitive are available? How do I make sure that LuaTeX is used? Someone could've defined \luatexversion just to play with poor maintainers. If \meaning isn't \meaning anylonger, nothing is safe!
@DavidCarlisle hence I think that my comparison of \meaning and \string is a nice engine-independent way to check for a primitive.

@Skillmon You could trust @JosephWright and test for \tex_expanded:D or whatever to test if primitives available they are set up early before packages can mess things up
@Skillmon yes I'm just being argumentative (I never really agreed with Heiko's packages saving and restoring hundreds of catcodes "just in case" as normal documents never changed them and radical setups such as xmltex that change lots of catcodes change the catcode of \ so nothing worked anyway.

@DavidCarlisle I know, still sometimes being argumentative helps figuring stuff out one wouldn't normally think about.
@DavidCarlisle generic code, so not really an option.

@Skillmon plain tex users that don't load expl3 deserve no sympathy?

@DavidCarlisle seems about right :) (no plain TeX user will ever use this anyway, I guess, still I started keeping expkv generic as far as possible, so ...)

9:12 PM
@Skillmon I wouldn't bet on it

@JosephWright ok, then I rephrase: It seems unlikely that a plain TeX user will use expkv.

10:04 PM
Right, now I need to find someone with InDesign and/or 3B2 to see how they do at Greek case changing: I can beat Word and Pages :)
6