4

I have the following code snippet, and meant to be formatted as such:

\setmainfont[
    UprightFeatures={
        SizeFeatures={
            {Size={-8.4},Font=MinionPro-Capt},
            {Size={8.4-13},Font=MinionPro-Regular},
            {Size={13-19.9},Font=MinionPro-Subh},
            {Size={19.9-},Font=MinionPro-Disp}
        },
        {RawFeature = {protrusion = mnr}},
    },
    BoldFeatures={
        SizeFeatures={
            {Size={-8.4},Font=MinionPro-BoldCapt},
            {Size={8.4-13},Font=MinionPro-Bold},
            {Size={13-19.9},Font=MinionPro-BoldSubh},
            {Size={19.9-},Font=MinionPro-BoldDisp}
        },
        {RawFeature = {protrusion=mnrb}},
    },
    ItalicFeatures={
        SizeFeatures={
            {Size={-8.4},Font=MinionPro-ItCapt},
            {Size={8.4-13},Font=MinionPro-It},
            {Size={13-19.9},Font=MinionPro-ItSubh},
            {Size={19.9-},Font=MinionPro-ItDisp}
        },
        {RawFeature = {protrusion=mni}},
    },
    BoldItalicFeatures={
        SizeFeatures={
            {Size={-8.4},Font=MinionPro-BoldItCapt},
            {Size={8.4-13},Font=MinionPro-BoldIt},
            {Size={13-19.9},Font=MinionPro-BoldItSubh},
            {Size={19.9-},Font=MinionPro-BoldItDisp}
        },
        {RawFeature = {protrusion=mnib}}
    },
    RawFeature={expansion=default},
]{Minion Pro}

However, applying latexindent to a .tex file containing the above code results in the mess below:

\setmainfont[
            UprightFeatures={
                SizeFeatures={
                    {Size={-8.4},Font=MinionPro-Capt},
                {Size={8.4-13},Font=MinionPro-Regular},
            {Size={13-19.9},Font=MinionPro-Subh},
            {Size={19.9-},Font=MinionPro-Disp}
            },
            {RawFeature = {protrusion = mnr}},
            },
            BoldFeatures={
                SizeFeatures={
                    {Size={-8.4},Font=MinionPro-BoldCapt},
                {Size={8.4-13},Font=MinionPro-Bold},
            {Size={13-19.9},Font=MinionPro-BoldSubh},
            {Size={19.9-},Font=MinionPro-BoldDisp}
            },
            {RawFeature = {protrusion=mnrb}},
            },
            ItalicFeatures={
                SizeFeatures={
                    {Size={-8.4},Font=MinionPro-ItCapt},
                {Size={8.4-13},Font=MinionPro-It},
            {Size={13-19.9},Font=MinionPro-ItSubh},
            {Size={19.9-},Font=MinionPro-ItDisp}
            },
            {RawFeature = {protrusion=mni}},
            },
            BoldItalicFeatures={
                SizeFeatures={
                    {Size={-8.4},Font=MinionPro-BoldItCapt},
                {Size={8.4-13},Font=MinionPro-BoldIt},
            {Size={13-19.9},Font=MinionPro-BoldItSubh},
            {Size={19.9-},Font=MinionPro-BoldItDisp}
            },
            {RawFeature = {protrusion=mnib}}
            },
            RawFeature= {expansion=default},
        ]{Minion Pro}

What can I do?

Marijn
  • 37,699
SRSR333
  • 568
  • 1
    Apart from asking the question here (which is a good thing to do) you can also write an issue on the Latexindent Github page. Usually Chris Hughes (which is also active here) is quite responsive. However, it would help if you can reduce your code to a more minimal version that shows the issue, probably 5-10 lines of font features should be sufficient to illustrate the problem. – Marijn Mar 15 '21 at 13:30
  • 2
    I'll take a look at this later today, hopefully :) – cmhughes Mar 15 '21 at 14:13

1 Answers1

5

update

As of V3.9.1 the script gives the output given below by default, and there is no need to use any configuration (SRSR333.yaml), so you can simply run

latexindent.pl myfile.tex

and the output will be as below.

original answer

The default settings allow the keyEqualsValuesBracesBrackets to have { within their names, which causes problems for your example.

We can use the fineTuning field in the following file:

SRSR333.yaml

defaultIndent: ' '
fineTuning:
    keyEqualsValuesBracesBrackets:
      name: '[a-zA-Z@\*0-9_\/.\h:\#-]+?'

and run

latexindent.pl -l SRSR333.yaml myfile.tex

gives the output

\setmainfont[
 UprightFeatures={
   SizeFeatures={
     {Size={-8.4},Font=MinionPro-Capt},
     {Size={8.4-13},Font=MinionPro-Regular},
     {Size={13-19.9},Font=MinionPro-Subh},
     {Size={19.9-},Font=MinionPro-Disp}
    },
   {RawFeature = {protrusion = mnr}},
  },
 BoldFeatures={
   SizeFeatures={
     {Size={-8.4},Font=MinionPro-BoldCapt},
     {Size={8.4-13},Font=MinionPro-Bold},
     {Size={13-19.9},Font=MinionPro-BoldSubh},
     {Size={19.9-},Font=MinionPro-BoldDisp}
    },
   {RawFeature = {protrusion=mnrb}},
  },
 ItalicFeatures={
   SizeFeatures={
     {Size={-8.4},Font=MinionPro-ItCapt},
     {Size={8.4-13},Font=MinionPro-It},
     {Size={13-19.9},Font=MinionPro-ItSubh},
     {Size={19.9-},Font=MinionPro-ItDisp}
    },
   {RawFeature = {protrusion=mni}},
  },
 BoldItalicFeatures={
   SizeFeatures={
     {Size={-8.4},Font=MinionPro-BoldItCapt},
     {Size={8.4-13},Font=MinionPro-BoldIt},
     {Size={13-19.9},Font=MinionPro-BoldItSubh},
     {Size={19.9-},Font=MinionPro-BoldItDisp}
    },
   {RawFeature = {protrusion=mnib}}
  },
 RawFeature={expansion=default},
]{Minion Pro}
cmhughes
  • 100,947