Deff, огромное спасибо! Всё работает как нужно.
Вот "прикрутил" ещё пару фич:
1) добавление вертикальной линии после заданного столбца
и/или
2) добавление горизонтальной линии после заданной строки.
Например, вертикальная линия добавляется перед последним столбцом в расширенной матрице коэффициентов СЛАУ.
Посмотрите, пожалуйста, не чрезмерной ли функция
LatexMatrix(...) получилась?
<html>
<head>
<style>
form {padding-left: 100px;}
caption {margin-bottom: 10px; font: bold 16px Calibri; line-height: 1;}
td {width: 125px; padding: 0px; text-align: center; background-color: #f3f3f3;
font: 14px Arial; height: 30px;}
td.mbrackets {width: 375px;}
.mbrackets input {display: block; float: left; margin: 4px 20px 0px 4px;}
.mbrackets img {display: block; float: left;}
div.brackets {display: inline-block;}
td.lines {width: 375px; height: 19px; font: 16px Calibri; text-align: left; text-indent: 10px; line-height: 1;}
td.vline, td.hline {height: 25px; font-size: 13px;}
input.rows, input.cols, td.vline input, td.hline input {width: 20px; height: 22px; color: blue;}
td.vline input, td.hline input {width: 20px; height: 20px; color: blue;}
textarea {padding: 10px; width: 378px; height: 180px;}
</style>
<script language="JavaScript">
var bracket='p'; //Preset - First checked input;
function brackets (obj)
{ obj=obj.parentNode.getElementsByTagName('input')[0];
obj.checked=true;
bracket=obj.value;
}
function LatexMatrix(r,c,vl,hl,output)
{
var i,j;
if (r.value == "" || c.value == "" || vl.value == "" || hl.value == "" )
{r.value = 2; c.value = 2; vl.value = 0; hl.value = 0;}
var a = ''; if(output.value!='') a = '\n';
output.value += a + "\\begin\{"+bracket+"matrix\}";
if (hl.value>0 & hl.value<r.value)
{for (i=1; i<=hl.value; i++)
{output.value += "\n";
if (vl.value>0 & vl.value<c.value) {for (j=1; j<=vl.value; j++) {output.value += "\ 1\ \&";}
output.value += "\\\!\\\!\\vline\\\!\\\!\&";
for (j=1; j<=c.value-vl.value-1; j++) {output.value += "\ 1\ \&";}}
else {for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";}}
output.value += "\ 1\ \\\\";
}
output.value += "\\hline\ ";
for (i=1; i<=r.value-hl.value-1; i++)
{output.value += "\n";
if (vl.value>0 & vl.value<c.value)
{for (j=1; j<=vl.value; j++) {output.value += "\ 1\ \&";}
output.value += "\\\!\\\!\\vline\\\!\\\!\&";
for (j=1; j<=c.value-vl.value-1; j++) {output.value += "\ 1\ \&";}
}
else {for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";}}
output.value += "\ 1\ \\\\";
}
}
else
{for (i=1; i<=r.value-1; i++)
{output.value += "\n";
if (vl.value>0 & vl.value<c.value)
{for (j=1; j<=vl.value; j++) {output.value += "\ 1\ \&";}
output.value += "\\\!\\\!\\vline\\\!\\\!\&";
for (j=1; j<=c.value-vl.value-1; j++) {output.value += "\ 1\ \&";}
}
else {for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";}}
output.value += "\ 1\ \\\\";
}
}
if (vl.value>0 & vl.value<c.value)
{output.value += "\n";
for (j=1; j<=vl.value; j++) {output.value += "\ 1\ \&";}
output.value += "\\\!\\\!\\vline\\\!\\\!\&";
for (j=1; j<=c.value-vl.value-1; j++) {output.value += "\ 1\ \&";}
}
else {output.value += "\n"; for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";}}
output.value += "\ 1\ \n\\end\{"+bracket+"matrix\}\n\n\[Замените\ 1\ нужными\ значениями\]";
}
</script>
</head>
<body>
<form name="matrix">
<table>
<caption>Выберите тип скобок и введите числа<br />строк и столбцов матрицы</caption>
<tr>
<td colspan="3" class="mbrackets">
<div class="brackets">
<img title="Круглые скобки" src="http://i018.radikal.ru/1207/4f/21fe23691c4f.jpg" onclick="brackets(this)" />
<input type="radio" name="mbrackets" checked value="p" onclick="brackets(this)" />
<img title="Прямые скобки (для определителей)" src="http://s55.radikal.ru/i150/1207/fd/cd7e314d6f0a.jpg" onclick="brackets(this)" />
<input type="radio" name="mbrackets" value="v" onclick="brackets(this)" />
<img title="Квадратные скобки" src="http://s017.radikal.ru/i400/1207/fd/e45e839d64e2.jpg" onclick="brackets(this)" />
<input type="radio" name="mbrackets" value="b" onclick="brackets(this)" />
<img title="Двойные прямые скобки (норма матрицы)" src="http://s57.radikal.ru/i157/1207/88/fe9f51030bce.jpg" onclick="brackets(this)" />
<input type="radio" name="mbrackets" value="V" onclick="brackets(this)" />
<img title="Фигурные скобки" src="http://s54.radikal.ru/i146/1207/f6/a968aa91e75d.jpg" onclick="brackets(this)" />
<input type="radio" name="mbrackets" value="B" onclick="brackets(this)" />
<img title="Без скобок" style="margin-top: 3px;" src="http://s011.radikal.ru/i317/1207/93/60bb22394691.jpg" onclick="brackets(this)" />
<input type="radio" name="mbrackets" value="" onclick="brackets(this)" style="margin-right: 8px" />
</div>
</td>
</tr>
<tr>
<td> Строки <b>n =</b> <input name="rows1" maxlength="1" type="text" class="rows" /></td>
<td> Столбцы <b>k =</b> <input name="cols1" maxlength="1" type="text" class="cols" /></td>
<td><input value="Вставить" onclick="LatexMatrix(rows1,cols1,vline1,hline1,matrix)" name="button" type="button"
title="Нажмите один раз" style="cursor: pointer;" />
</td>
</tr>
<tr><td colspan="3" class="lines">Необязательные параметры</td></tr>
<tr>
<td colspan="3" class="vline">
Добавить вертикальную линию после <input name="vline1" maxlength="1" type="text" />-го столбца
</td>
</tr>
<tr>
<td colspan="3" class="hline">
Добавить горизонтальную линию после <input name="hline1" maxlength="1" type="text" />-й строки
</td>
</tr>
</table>
<textarea name="matrix" placeholder="Здесь появится LaTeX-код матрицы"></textarea>
</form>
</body>
</html>