How do I center a double-lined diagram title, interpreted as LaTex?
15 views (last 30 days)
Show older comments
Why does the following not center the first line of the double-lined diagram title?
str_title = {'Line 1';'Line 2'}; title(str_title,'interpreter','latex','HorizontalAlignment', 'center');
1 Comment
Robert U
on 28 Sep 2017
Hi Ulrik William Nash:
Please, provide a figure of your result. It is not possible to reproduce what you describe.
Varying the 'HorizontalAlignment'-property leads to different positions of the title strings as expected:
str_title = {'Line 1';'Line 2'};
fh = figure;
ah = axes;
title(ah,str_title,'interpreter','latex',...
'HorizontalAlignment', 'center');
hold on
bh = axes;
title(bh,str_title,'interpreter','latex',...
'HorizontalAlignment', 'left', 'color', 'green');
ch = axes;
title(ch,str_title,'interpreter','latex',...
'HorizontalAlignment', 'right', 'color', 'blue');
Kind regards,
Robert
Answers (2)
Benjamin Getraer
on 3 Jan 2018
Edited: Benjamin Getraer
on 4 Jan 2018
The LaTex interpreter will automatically left-align the text block, and the 'horizontalalignment' argument will align the entire block instead of each line individually. The alignment has to be set INSIDE of the LaTex environment.
An example of the problem:
An example of the solution using the tabular environment:
The code looks like this:
title('\begin{tabular}{c} The first line \\ Followed by another line \end{tabular}',...
'interpreter','latex')
For readability it could be translated to sprintf() format like this:
title_text = 'The first line \\ Followed by another line';
title(sprintf('\\begin{tabular}{c} %s \\end{tabular}',title_text),...
'interpreter','latex')
Or broken down like this:
line1 = 'The first line';
line2 = 'Followed by another line';
title(sprintf('\\begin{tabular}{c} %s %s %s \\end{tabular}',line1,'\\',line2),...
'interpreter','latex')
I think that breaking it down like this last example is the most clear, especially if the code for the text is especially long.
NOTE: other alignments can be achieved as well:
Centered
\begin{tabular}{c}
Right aligned
\begin{tabular}{r}
Left aligned
\begin{tabular}{l}
0 Comments
noahop
on 5 Apr 2018
I had to add two \\ commands in a row (between the two lines) to get this to work on Matlab R2017a.
So for me it became:
"\\begin{tabular}{c} %s \\\\ %s \\end{tabular}"
0 Comments
See Also
Categories
Find more on Graphics Object Properties in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!