From 8f646097bf669d85f01847bf2b5e86670f4ed31f Mon Sep 17 00:00:00 2001 From: Leedehai Date: Wed, 22 Nov 2023 12:44:39 -0500 Subject: [PATCH] Until Typst implements the feature, an incomplete & hacky interim solution for braket etc. Not satisfactory, until Typst resolves https://github.com/typst/typst/issues/240 This interim solution can handle $ mel(u,M,v) mel(u,vec(U,V),v), mel(vec(U,V),M,v) $ but not something like $ mel(u,vec(U,V,W),v) mel(vec(U,V,W),M,v) $ Motivated by https://github.com/Leedehai/typst-physics/issues/16 --- README.md | 2 ++ physica-manual.pdf | Bin 369222 -> 369260 bytes physica-manual.typ | 3 +-- physica.typ | 21 ++++++++++++++++++--- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e8cddd0..a241721 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,8 @@ explore the design together. Some features might warrant a package on its own. [physica-manual.pdf](https://github.com/Leedehai/typst-physics/blob/master/physica-manual.pdf). This does not scale well. I plan to add programmatic testing by comparing rendered pictures with golden images. +* Please nudge Typst maintainers to resolve https://github.com/typst/typst/issues/240 by scaling up given glyphs in the middle of [`lr()`](https://typst.app/docs/reference/math/lr#functions-lr) :grinning: + ## License * Code: the [MIT License](LICENSE.txt). diff --git a/physica-manual.pdf b/physica-manual.pdf index 4b93182ffb43803e7931205fabc18f2a80fe335e..e28fce41dd6106c68adc6819f90ac02955e9d935 100644 GIT binary patch delta 4912 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 nO#z3K`!WE!;QxL()YTQG6#o0&AY)$vfShnBmz { let height = measure($ #n #M #m $, styles).height; - let phantom = box(height: height * 0.8, width: 0pt, inset: 0pt, stroke: none); + let phantom = box( + height: height * __height_mul_factor(height.pt()), + width: 0pt, inset: 0pt, stroke: none); $ lr(angle.l #n lr(|#M#h(0pt)phantom|) #m angle.r) $ })