Показать сообщение отдельно
  #18 (permalink)  
Старый 04.07.2012, 00:49
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

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>

Последний раз редактировалось Demath, 11.10.2012 в 01:16. Причина: Убрал код в спойлер
Ответить с цитированием