caption: Linking created: 20131205155230596 modified: 20211230145939554 tags: WikiText title: Linking in WikiText type: text/vnd.tiddlywiki A key capability of WikiText is the ability to make links to other tiddlers or to external websites. ! Manual Links Link to a tiddler by title: ``` [[Tiddler Title]] ``` To link to a tiddler and specify the text of the link: ``` [[Displayed Link Title|Tiddler Title]] ``` You can also create a link from the editor toolbar. Click ''link'' (<<.icon $:/core/images/link>>), and search and select a tiddler. ! ~CamelCase Links For tiddler titles that match the CamelCase rules, just typing the title without double square brackets will automatically create a link. You can suppress a link from being recognised by preceding it with `~`. For example: <> ! External Links To link to an external [[resource|https://en.wikipedia.org/wiki/Web_resource]] such as a website or a file, type its //full// [[URL|https://en.wikipedia.org/wiki/URL]], including the [[URI scheme|https://en.wikipedia.org/wiki/URI_scheme]] such as a protocol (e.g. `http://`, `file://`) or `mailto`: ``` https://tiddlywiki.com/ [[TW5|https://tiddlywiki.com/]] [[Mail me|mailto:me@where.net]] [[Open file|file:///c:/users/me/index.html]] ``` For this syntax to work, the URL has to be recognisable as a URL. Otherwise, it is treated as a tiddler title. As a result, in case you want to link to a resource locatable using a relative path, use the extended syntax: ``` [ext[Open file|index.html]] [ext[Open file|./index.html]] [ext[Open file|../README.md]] [ext[Open file|c:\users\me\index.html]] ``` The extended syntax still works with full URLs, although in that case it is not necessary: ``` [ext[https://tiddlywiki.com]] [ext[TW5|https://tiddlywiki.com]] [ext[Mail me|mailto:me@where.net]] [ext[Open file|file:///c:/users/me/index.html]] ``` You can also use the extended syntax to force an external link: ``` [ext[Donate|bitcoin:1aabbdd....?amount=0.001]] ``` ! Customising Tiddler Links See the LinkWidget for details of the underlying widget used to implement tiddler links, including macros that can be used to customise its behaviour. ! Generating dynamic links [[Linking in WikiText]] does not lend itself well to creating dynamic links. The reason is because this WikiText link: ``` [[link to myself|Linking in WikiText]] ``` is shorthand for using the LinkWidget and TextWidget like this: ``` <$link to="Linking in WikiText"> <$text text="link to myself"/> ``` Since both the link title ("link to myself") and the link target ("Linking in ~WikiText") are used as widget attributes, no WikiText expansion takes place. For example, an attempt to use a [[reference|TextReference]] and a [[variable|Variables]] to dynamically generate a link like this: <<.bad-example "`[[{{!!caption}}|<>]]`">> is the same as trying to use the LinkWidget and TextWidget like this: <<.bad-example """``` <$link to="<>"> <$text text="{{!!caption}}"/> ```""">> This will not work as desired. Content inside of quoted widget attributes is [[treated as a literal value|HTML in WikiText]] and protected from WikiText expansion, so it will render like this: <<.bad-example "[[{{!!caption}}|<>]]">> In order to get the desired result, the LinkWidget can be used directly like this: <>>{{!!caption}}">> See also another example of [[constructing dynamic links|Concatenating text and variables using macro substitution]].