SOURCE

function findIndex(input,match,op){
    let cleanedInput = input.replace(/\s+/g, '');
    let matchIndex = cleanedInput.indexOf(match);
    if(op===1 && matchIndex!==-1) matchIndex += match.length-1;
    if (matchIndex !== -1) {
    let indexInOriginal = 0;
    for (let i = 0; i < input.length; i++) {
      if (input[i] !== ' ' && input[i] !== '\n' && input[i] !== '\t') {
        if (indexInOriginal === matchIndex) {
          return i;
        }
        indexInOriginal++;
      }
    }
  }
  return -1;
}
function print(input,l){
    x=Math.floor((l-input.length)/2);
    if(2*x!==l-input.length) document.write(' '.repeat(x+1));
    else document.write(' '.repeat(x));
    document.write(input);
    document.write(' '.repeat(x));
}
function formatting(input){
    let cleanedInput = input.replace(/\s+/g, '');
    let l = 1, cnt = 1;
    const content = new Array(21).fill('').map(() => new Array(21).fill(''));
    for(i=0;i<cleanedInput.length;i++){
        if(cleanedInput[i]==='&'){
            cnt++;
        }else if(cleanedInput[i]==='\\'&&cleanedInput[i+1]==='\\'){
            i++;
            if(i!==cleanedInput.length-1){
                l++;
                cnt=1;
            }
        }else{
            content[l][cnt]+=cleanedInput[i];
        }
    }
    const maxLength= new Array(21).fill(0);
    for(i=1;i<=l;i++){
        for(j=1;j<=cnt;j++){
            maxLength[j]=Math.max(maxLength[j],content[i][j].length);
        }
    }
    for(i=1;i<=l;i++){
        for(j=1;j<=cnt;j++){
            print(content[i][j],maxLength[j]+2);
            if(j!==cnt) document.write('&');
        }
        document.write('\n');
    }
}
function solution(input){
    l = input.length;
    a = findIndex(input,"\\begin{matrix}",1);
    b = findIndex(input,"\\begin{pmatrix}",1);
    c = findIndex(input,"\\begin{bmatrix}",1);
    d = findIndex(input,"\\end{matrix}",2);
    e = findIndex(input,"\\end{pmatrix}",2);
    f = findIndex(input,"\\end{bmatrix}",2);
    let minVal,minVar;
    if (a !== -1 && d !== -1) {
        minVal = a;
        minVar = 'a';
    }
    if (b !== -1 && e !== -1 && (!minVal || b < minVal)) {
        minVal = b;
        minVar = 'b';
    }
    if (c !== -1 && f !== -1 && (!minVal || c < minVal)) {
        minVal = c;
        minVar = 'c';
    }
    if(!minVal) return;
    if (minVar === 'a') {
        document.write(input.slice(0,a+1));
        document.write('\n');
        formatting(input.slice(a+1,d));
        document.write(input.slice(d,l));
    } else if (minVar === 'b') {
        document.write(input.slice(0,b+1));
        document.write('\n');
        formatting(input.slice(b+1,e));
        document.write(input.slice(e,l));
    } else if (minVar === 'c') {
        document.write(input.slice(0,c+1));
        document.write('\n');
        formatting(input.slice(c+1,f));
        document.write(input.slice(f,l));
    }
}
const input = String.raw`
		\[\begin{matrix}
			a+b  &  ds2343  \\
			x+r &  \math{c^2x} \\
			\end{matrix}\]`;
solution(input);
console 命令行工具 X clear

                    
>
console