Skip to content

Add missing tacks#151

Open
MDLC01 wants to merge 5 commits intotypst:mainfrom
MDLC01:tacks
Open

Add missing tacks#151
MDLC01 wants to merge 5 commits intotypst:mainfrom
MDLC01:tacks

Conversation

@MDLC01
Copy link
Collaborator

@MDLC01 MDLC01 commented Mar 26, 2026

  • tack.r.triple was simply missing for no reason.
  • ttack.r and ttack.r.not were already present as forces and forces.not. This adds all the other similar variants under non-semantic names because I don't think there is a good semantic name.
  • There is no non-short version of ttack.t.short and ttack.b.short in Unicode AFAIK. ttack.t and ttack.b fall back to ttack.t.short and ttack.b.short respectively.
  • The .double and .triple modifiers on tack are already used for something else, hence the proposed ttack and tttack symbols. Those names aren't the greatest but they are the best I was able to come up with. Feel free to make other suggestions.

@MDLC01 MDLC01 added the waiting on reviews Breaking and non-breaking changes need respectively 3 and 2 reviews label Mar 26, 2026
@MDLC01
Copy link
Collaborator Author

MDLC01 commented Mar 26, 2026

There is also U+2AE6 ⫦, which I don't know how to name.

@Enivex
Copy link
Collaborator

Enivex commented Mar 26, 2026

What's the motivation behind ttack and tttack? It seems a bit awkward to me

@isuffix
Copy link

isuffix commented Mar 26, 2026

I also dislike ttack and tttack, they feel like the kind of LaTeX symbol names which are clever, but are hard to remember and discover, like \oint. It's also uncomfortable to me that the existing tack.r.l (⟛) doesn't have the same base as ttack.l (⫣) or ttack.r (⊩).

Suggestion:
What if we make more use of repeated letters instead of .double/.triple? If we use .v as the letter for the vertical stem of the tack, then we could assign them like this:

tack
  .v.r ⊢
  .v.rr ⊨
  .vv.r ⊩
  .vv.rr ⊫

If we order the .v variants before .vv (and keep .double as an alias to .rr, .ll, etc. for a few versions), fallback to the existing tacks should work alright. And for the up/down facing tacks, we could either use .h to refer to the horizontal base or keep using .v for consistency (or maybe use .s for both as the 'stem' of the tack?), I'm not sure which would be best.

Here's that expanded to all the tacks (using just .v/.vv/.vvv)
tack
  .v.r ⊢
  .v.r.not ⊬
  .v.r.long ⟝
  .v.r.short ⊦
  .v.rr ⊨
  .v.rr.not ⊭
  .v.rrr ⫢
  .vv.r ⊩
  .vv.r.not ⊮
  .vv.rr ⊫
  .vv.rr.not ⊯
  .vvv.r ⊪
  .v.l ⊣
  .v.l.long ⟞
  .v.l.short ⫞
  .v.ll ⫤
  .vv.l ⫣
  .vv.l.r ⟛
  .vv.ll ⫥
  .v.t ⊥
  .v.t.big ⟘
  .v.t.short ⫠
  .v.tt ⫫
  .vv.t.short ⫨
  .v.b ⊤
  .v.b.short ⫟
  .v.b.big ⟙
  .v.bb ⫪
  .vv.b.short ⫧

@isuffix
Copy link

isuffix commented Mar 26, 2026

For U+2AE6 ⫦ I feel like .split or .apart may be good modifiers. E.g. tack.r.double.split currently or tack.v.rr.split under my proposal above.

@MDLC01
Copy link
Collaborator Author

MDLC01 commented Mar 26, 2026

What's the motivation behind ttack and tttack? It seems a bit awkward to me

I agree but I did not have any better idea at the time.

What if we make more use of repeated letters instead of .double/.triple?

I agree this is a better idea, but I don't like the use of the .v modifier. What about the following?

tack
  .r ⊢
  .rr ⊨
  .doube.r ⊩
  .double.rr ⊫

This would be a breaking change, however.

For U+2AE6 ⫦ I feel like .split or .apart may be good modifiers.

Could you provide a rationale for those names? I'm not sure exactly what is "split" or "apart" in this symbol.

It's also uncomfortable to me that the existing tack.r.l (⟛) doesn't have the same base as ttack.l (⫣) or ttack.r (⊩).

I should mention that there are two other similar symbols in Unicode that don't yet have a name in Codex: U+2AE9 ⫩ and U+27DA ⟚. I should probably add them in this PR as well as they are pretty straight forward to name given the precedent of tack.r.l. Unicode does not define any other tack symbol as far as I am aware.1

Footnotes

  1. There are two other symbols containing up tacks, but they are more specifically perpendicular symbols: U+29B9 ⦹ and U+2AE1 ⫡.

@isuffix
Copy link

isuffix commented Mar 26, 2026

Keeping .rr, but using .double/.triple for the stem is a nice compromise! I'm in favor.

For .split/.apart I think I misconstrued what the symbol looks like and checking it again I also don't really know what I was thinking. My rationale was something to the effect that in U+2AE6 ⫦ there's a larger/more prominent visual gap between the two lines than in, say U+22A9 ⊩, but I don't really see that now.

Maybe a name for U+2AE6 ⫦ could be tack.r.mid, since it has an extra line in the middle of the tack?

@MDLC01 MDLC01 added the breaking This involves a breaking change label Mar 27, 2026
@MDLC01
Copy link
Collaborator Author

MDLC01 commented Mar 27, 2026

I added names for U+2AE9 ⫩ and U+27DA ⟚, and switched to use repeated letters instead. This makes this PR a breaking change.

Regarding ⟛, ⫩, and ⟚, we may want to use tacks as the base symbol for consistency with arrows and harpoons, but I don't think this is necessary because the family is quite small (only three variants).

@knuesel
Copy link
Collaborator

knuesel commented Mar 27, 2026

I would prefer tacks for ⟛, ⫩, and ⟚ as .l.r and .t.b evoke "modifications" in both directions rather than duplication.

I guess the double/triple variants are omitted so we can show the deprecations for one release. Should there be a sibling draft PR to keep track of the symbols that don't make it here, so we don't forget?

For U+2AE6 ⫦ what about tack.double.r.through ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking This involves a breaking change waiting on reviews Breaking and non-breaking changes need respectively 3 and 2 reviews

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants