How do I center a double-lined diagram title, interpreted as LaTex?

20 views (last 30 days)
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
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

Sign in to comment.

Answers (2)

Benjamin Getraer
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.
I found a solution HERE that uses the LaTex tabular 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}

noahop
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}"

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!