MATLAB: интервал между шрифтами латексного интерпретатора - PullRequest
2 голосов
/ 06 марта 2012

Интервал между шрифтами в уравнениях набора типов TeX в MATLAB по умолчанию слишком высок. Есть ли способ увеличить интервал, чтобы, например, числитель и знаменатель дроби не соприкасались с линией, разделяющей два?

plot(1:10,rand(1,10));
set(gca,'FontSize',18);
legend('$\frac{xy}{\exp\left(\frac{x}{y}\right)}$');
set(legend(),'interpreter','latex');

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Я думаю, что самый простой способ - использовать хитрость LaTeX.

Короче говоря, в LaTeX $ ... $ используется для встроенной математики, но для отображения математики вы должны либо использовать \[ ... \], либо традиционный способ сделать то же самое $$ ... $$. Для документов LaTeX не используйте последний, но для MATLAB этого должно быть достаточно.

Разница между встроенной математикой и отображаемой математикой аналогична разнице между использованием обратных кавычек (``) и отступов в StackOverflow. Первый покажет ваш код между текстом, последний между абзацами. С математикой, только математика режима отображения будет иметь приличную планировку для больших формул.

Таким образом, следующий код должен решить вашу проблему:

plot(1:10,rand(1,10));
set(gca,'FontSize',18);
legend('$$\frac{xy}{\exp\left(\frac{x}{y}\right)}$$');
set(legend(),'interpreter','latex');

Если вам нужно еще больше, вы можете обратиться к Не так коротко, Введение в LaTeX2e , которое поможет вам начать со многими хитростями торговли LaTeX.

редактирование: Я обычно использую фантомы (\phantom, \vphantom, \hphantom) в качестве хитрости для улучшения интервалов в формулах, но \vspace или \vskip может быть немного чище.

1 голос
/ 24 августа 2012

Просматривая список свойств легенды, кажется, нет никакого способа указать межстрочный интервал, который согласуется с автоматическим позиционированием. Вы можете изменить интервал между линиями, увеличив поле, но изменив конечную запись (высоту) в свойстве OuterPosition. Кажется, что расположение блока основано на его левом нижнем углу, поэтому, если ваш блок легенд находится в северном положении, вам также нужно уменьшить вторую запись (y-позицию) на равную величину.

В этом примере я увеличиваю высоту поля легенды на север на 25% (что, как я обнаружил, дает хорошие результаты), что увеличивает межстрочный интервал.

h = legend(s1,s2,s3, 'location', 'northeast');
set(h, 'fontsize', 16, 'interpreter', 'latex')

outerposition = get(h, 'OuterPosition');
delta_h = 0.25*outerposition(4);
outerposition(2) = outerposition(2) - delta_h;
outerposition(4) = outerposition(4) + delta_h;
set(h, 'OuterPosition', outerposition)

Вы должны быть осторожны с изменением размера фигуры после запуска этого фрагмента кода, так как изменение свойства OuterPosition очищает автоматическое размещение поля относительно осей графика. Если вы измените размер фигуры, поле с надписью перейдет в обход.

...