Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Редактор математических формул для форума phpBB (https://javascript.ru/forum/dom-window/29303-redaktor-matematicheskikh-formul-dlya-foruma-phpbb.html)

Demath 22.06.2012 19:56

Редактор математических формул для форума phpBB
 
Помогите доделать редактор для ввода математических формул (LaTeX) для форума на phpBB_3.
Делаю по аналогии со смайлами в phpbb_3, то есть при нажатии на картинку с формулой в форму ответа вставляется её LaTeX-код. Например, неопределённый интеграл

<a href="#" onclick="insert_text('\\int', true); return false;"
    style="display:block; width: 30px; height: 70px; cursor: pointer;">
<img src="/indefinite_integral.png" title="Неопределённый интеграл" />
</a>

Но для матриц разумно сделать форму ввода, что-то типа такого
_______________________________________________

Выберите тип скобок и введите число строк и колонок
__(A)__|A|__[A]__ǁAǁ___Строки_ n __Колонки_ k __
_______________________________________________

Например, если пользователь выберет (A) и введёт n=3 и k=4, то в форму ответа вставится LaTeX-код

Код:

\begin{pmatrix}
  &  &  &  \\
  &  &  &  \\
  &  &  & 
\end{pmatrix}

Как видно, ячейки разделяются символом &, а строки - \\.
Скобки имеют вид:
- круглые \begin{pmatrix}\end{pmatrix}
- прямые \begin{vmatrix}\end{vmatrix}
- квадратные \begin{bmatrix}\end{bmatrix}
- двойные прямые \begin{Vmatrix}\end{Vmatrix}

Gvozd 23.06.2012 02:24

Вы просите готовый скрипт с нуля.

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

Demath 26.06.2012 21:25

Сколько это будет примерно стоить?

Вообще, нужна только форма для ввода матриц, остальную часть редактора сделал и оформил.

Gvozd 27.06.2012 00:37

50WMZ

Demath 02.07.2012 02:54

Почитал учебничек на этом сайте и, вроде бы, получилось :-? сделать основную часть js-кода. Не догнал, как сделать выбор типа скобок для матрицы.

Как отменить удаление ранее набранного текста в <textarea> при вводе (нажатии Вставить)?
Вот код:

<html>
<head>
<style>
form {padding-left: 100px;}
caption {margin-bottom: 10px; font: bold 18px Calibri;}
td {width: 125px; padding: 0px; vertical-align: middle; background-color: #f3f3f3;
	font: 14px Arial; height: 38px;}
input.rows, input.cols {width: 20px; color: blue;}
textarea {padding:10px; width:380px; height:150px;}
</style>

<script language="JavaScript">
<!-- 
function LatexMatrix(r,c,output)
{
	var i,j;
	if (r.value == "" || c.value == "" ) {r.value = 2; c.value = 2;}

	output.value = "\\begin\{pmatrix\}\n";

	for (i=1; i<=r.value-1; i++)
		{for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";} output.value += "\ 1\ \\\\\n";}

	for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";}

	output.value += "\ 1\ \n\\end\{pmatrix\}\n\n\[Замените\ 1\ нужными\ значениями\]";
}
// -->
</script>
</head>

<body>
<form name="matrix">
<table>
<caption>Введите числа строк и столбцов матрицы</caption>
<tr>
<td> Строки <b>i =</b> <input name="cols1" maxlength="1" type="text"  class="rows"></td>
<td> Столбцы <b>j =</b> <input name="rows1" maxlength="1" type="text"  class="cols"></td>
<td align="center">
<input value="Вставить" onclick="LatexMatrix(cols1,rows1,matrix)" name="button" type="button"
		style="cursor: pointer;">
</td>
</tr>
</table>
<textarea name="matrix" placeholder="Здесь появится LaTeX-код матрицы"></textarea>
</form>
</body>
</html>

P.S. Сильно не ругайте: первый раз js-код с нуля пишу.

Deff 02.07.2012 03:10

Цитата:

Сообщение от Demath
Не догнал, как сделать выбор типа скобок для матрицы.

Изобразите эскиз
Цитата:

Сообщение от Demath
ак отменить удаление ранее набранного текста в <textarea> при вводе (нажатии Вставить)?

Поясните подробней - стереть всё ?

Demath 02.07.2012 03:17

Цитата:

Сообщение от Deff (Сообщение 185761)
Поясните подробней - стереть всё ?

Когда набираю какой-либо текст в <textarea>, а затем добавляю матрицу (нажимаю кнопку "Вставить"), то весь ранее набранный текст стирается и остаётся только матрица :cray:

Deff 02.07.2012 03:50

[HTML run]
<html>
<head>
<style>
form {padding-left: 100px;}
caption {margin-bottom: 10px; font: bold 18px Calibri;}
td {width: 125px; padding: 0px; vertical-align: middle; background-color: #f3f3f3;
	font: 14px Arial; height: 38px;}
input.rows, input.cols {width: 20px; color: blue;}
textarea {padding:10px; width:380px; height:150px;}
</style>

<script language="JavaScript">
<!-- 
function LatexMatrix(r,c,output)
{
	var i,j;
	if (r.value == "" || c.value == "" ) {r.value = 2; c.value = 2;}
	var a = ''; if(output.value!='') a = '\n';
	output.value += a + "\\begin\{pmatrix\}\n";

	for (i=1; i<=r.value-1; i++)
		{for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";} output.value += "\ 1\ \\\\\n";}

	for (j=1; j<=c.value-1; j++) {output.value += "\ 1\ \&";}

	output.value += "\ 1\ \n\\end\{pmatrix\}\n\n\[Замените\ 1\ нужными\ значениями\]";
}
// -->
</script>
</head>

<body>
<form name="matrix">
<table>
<caption>Введите числа строк и столбцов матрицы</caption>
<tr>
<td> Строки <b>i =</b> <input name="cols1" maxlength="1" type="text"  class="rows"></td>
<td> Столбцы <b>j =</b> <input name="rows1" maxlength="1" type="text"  class="cols"></td>
<td align="center">
<input value="Вставить" onclick="LatexMatrix(cols1,rows1,matrix)" name="button" type="button"
		style="cursor: pointer;">
</td>
</tr>
</table>
<textarea name="matrix" placeholder="Здесь появится LaTeX-код матрицы"></textarea>
</form>
</body>
</html>

Demath 02.07.2012 04:39

Спасибо за реальную помощь! :thanks:

Если возможно, подскажите, пожалуйста, что ещё "прикрутить", чтобы матрица вставлялась в текущее положение курсора?
То есть чтобы текст, идущий после матрицы, переносился вместе с ней.

Deff 02.07.2012 04:44

Demath,
Хм - ну ежели разберетесь ... то вот стандартный девайс на phpBB форумах http://javascript.ru/forum/css-html-...tml#post185398
пост 2 в спойлере


Часовой пояс GMT +3, время: 07:46.