I guess the easiest solution markup-wise would be to reference another reference:
[Bücher]: [Buch]
[Buch]: example.com/buch
The advantage would be that it doesn’t matter where you put it. E.g. in the first paragraph you could use [Buch][], and in another one, you could use [Bücher][]
The only problem that would arise is circular referencing and how to dissolve it, i.e. what to output then.
Other than that, i would favor a simple contracting syntax without any new symbols or regular expressions:
[bücher]:
[buch]: example.com/buch
or
[bücher]: [buch]: example.com/buch
PS: i also like the idea of contained references as in [Leo [Tolstoy]]
, but that would efectively disallow square brackets inside link text. And yes, it might collide with some applications that use a wiki where the double brackets actually mean “this is a wiki link”.
PPS: There’s a nice logic in the [Leo [Tolstoy]]
syntax: [link text with [printed reference]]
vs. [link text][hidden reference]
. I do love it more and more! It’s also more clear than in wiki-syntax where [[CD]]s
gets [CDs][CD]
. With the syntaxx from above one could write The company is producing [[wheel]chair]s.
and get [wheelchair][wheel]s
. An edge case, but totally logical and very easy to see.