Char not working properly ?

5 visualizzazioni (ultimi 30 giorni)
Matteo Bonhomme
Matteo Bonhomme il 6 Gen 2023
Risposto: VBBV il 9 Gen 2023
Hello
Acccording to internet the unicode for subscript e ( _{e} in Latex) is U2091 or 8337 in decimal.
char(8337)
ans = 'ₑ'
but on my machine it doesn't work.
Other unicode work but not this one. Does anybody know what I should check ?
I'm on window 11 and my laptop is in french if that helps.
  7 Commenti
Matteo Bonhomme
Matteo Bonhomme il 9 Gen 2023
I tried, it still doesn't work.
After doing some additionnal research, it looks like that's the best that unicode can do. The unicode character of the voyel are just not the same size. (found this cool website btw : https://www.unicodeit.net/ )
I read somewhere else on the forum that uitextarea does't accept interpreter so I don't think there's a way to fix that.
After doing some try I found a workaround where I put axes then put a textbox on the axes then hide the axes:
hFig=uifigure;
ax=uiaxes(hFig);
text(ax,0.5,0.5,"T_{antenna}",'FontSize', 40)
ax.Visible='off';
That's not answering my initial question but that's a satisfying work around
Adam Danz
Adam Danz il 9 Gen 2023
I was able to reproduce these difference between results shown here and on my local machine. Clearly the encoding is not consistent between the Run feature and my local installation and there are differences between recent releases. There were changes to system encoding in 22a (release notes) but that does not explain these differences and I haven't had time to look deeper.
Subscripts codes references on wiki.
unidec = hex2dec({'2090','2099','209c','2091','2099','2099','2090'})
unidec = 7×1
8336 8345 8348 8337 8345 8345 8336
str = ['T', char(unidec')]
str = 'Tₐₙₜₑₙₙₐ'
text(0.5,0.5,str,'FontSize',24)

Accedi per commentare.

Risposta accettata

VBBV
VBBV il 9 Gen 2023
To display text on figure window, you should rather use uilabel function in place of uitextarea which produces same output as desired, This function also supports both latex and tex interpreters in contrast to former uitextarea function.
hFig=uifigure;
txa = uilabel(hFig);
txa.Text ='T_{antenna}'
txa.Interpreter = 'tex'
txa.FontName= 'Arial';
txa.FontSize=40;
txa.FontWeight='normal'
txa.Position = [100 274 170 45]

Più risposte (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov il 6 Gen 2023
To display in a figure is straightforward, e.g.:
figure; title(char(8337))
text(0.5, 0.5, ['This is the character: ' char(8337)])
  3 Commenti
Rik
Rik il 9 Gen 2023
The whole point of Unicode is not to have these things happen, so this behavior should be considered a bug. Please report it.
Matteo Bonhomme
Matteo Bonhomme il 9 Gen 2023
I just did it
I found a workaround so I'll stop looking into this issue but if someone understand what's happening I'm interested

Accedi per commentare.

Tag

Prodotti


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by