2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение05.04.2020, 14:45 
Аватара пользователя
В крайнем случае можно определить команду \? и при появлении переноса вручную вставлять её перед тем символом, который нужно продублировать:
Используется синтаксис LaTeX
\def\?#1{#1\nobreak\discretionary{}{\hbox{$\mathsurround=0pt #1$}}{}}

$h_1(y,M)=(h_2y,M\?\cap C_2)$
Это, конечно, несколько неудобно, тем более, что при изменении текста абзаца переносы могут "переехать" в другие места, и придётся просматривать результат компиляции, чтобы вставить команду в новых местах (в старых местах можно не удалять, так как команда не дублирует символ, если переноса нет).

P.S. Недавно столкнулся с тем, что пакет breqn несовместим с командой \binomial.

 
 
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение05.04.2020, 14:55 
Внутритекстовая у вас тогда отдельным боксом будет. Внутри него перенос, конечно, будет, но это вряд ли то, что ожидается.

 
 
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение05.04.2020, 15:18 
Аватара пользователя
dryabov в сообщении #1451558 писал(а):
Внутритекстовая у вас тогда отдельным боксом будет. Внутри него перенос, конечно, будет, но это вряд ли то, что ожидается.
Это Вы мне? Команда делает именно то, что ожидается: если \LaTeX переносит часть формулы после символа, перед которым стоит "\?", на следующую строку, то символ печатается дважды: в конце первой строки и в начале второй. Я ей когда-то пользовался. В преамбуле у меня был вот такой фрагмент:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
% Переносы математики
\begingroup
\catcode`\+\active\gdef+{\mathchar8235\nobreak\discretionary{}{\usefont{OT1}{cmr}{m}{n}\char43}{}}
\catcode`\-\active\gdef-{\mathchar8704\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char0}{}}
\catcode`\=\active\gdef={\mathchar12349\nobreak\discretionary{}{\usefont{OT1}{cmr}{m}{n}\char61}{}}
\catcode`\<\active\gdef<{\mathchar"313C\nobreak\discretionary{}{\usefont{OML}{cmm}{m}{n}\char60}{}}
\catcode`\>\active\gdef>{\mathchar"313E\nobreak\discretionary{}{\usefont{OML}{cmm}{m}{n}\char62}{}}
\endgroup
\def\times{\mathchar8706\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char2}{}}
\def\subset{\mathchar"321A\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char26}{}}
%\supset,\subseteq,\notin
\def\supset{\mathchar"321B\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char27}{}}
\def\subseteq{\mathchar"3212\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char18}{}}
\def\neq{\not=\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char54\usefont{OT1}{cmr}{m}{n}\char61}{}}
\def\sim{\mathchar"3218\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char24}{}}
\def\in{\mathchar"3232\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char50}{}}
\def\to{\mathchar"3221\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char33}{}}
\def\?#1{#1\nobreak\discretionary{}{\hbox{$\mathsurround=0pt #1$}}{}}
% Конец переносов математики
Но я его не сам сочинил, а откуда-то скопировал. Давно-давно.

 
 
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение05.04.2020, 15:49 
Someone в сообщении #1451569 писал(а):
Это Вы мне?

Нет, это было для Munin.

А что касается команды \? - речь выше шла о дублировании знаков в пакете breqn, а там изначально разрыв вставляется перед символом, а не после (как в текстовых формулах), поэтому команда должна иметь вид
Используется синтаксис LaTeX
\def\?#1{\discretionary{\hbox{$\mathsurround=0pt #1$}}{}{}\nobreak#1}
 


Можно через \if@display объединить оба кода (для текста и для breqn) в один:
Используется синтаксис LaTeX
\usepackage{amsmath}
\makeatletter
\def\?#1{\if@display\discretionary{\hbox{$\m@th\displaystyle#1$}}{}{}\nobreak#1\else#1\nobreak\discretionary{}{\hbox{$\m@th#1$}}{}\fi}
\makeatother
 

 
 
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение05.04.2020, 19:30 
Аватара пользователя
dryabov в сообщении #1451558 писал(а):
но это вряд ли то, что ожидается.

Тогда нужно более точное описание того, что ожидается. В частности, от вас.

 
 
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение07.04.2020, 07:47 
Дублирование при переносе вручную знака умножения как \times - это стандартный способ, или есть другой? Увидел здесь символы \* - сразу не нашёл про них, как они используются, есть применения при ручном наборе?
Вопрос немного не по месту, но раз здесь специалисты по TEX и чтобы не множить темы. Хочется некоторые темы с форума собирать в TEX файл. Как их скопировать в него быстрее всего?

 
 
 
 Re: Breqn Дублирование знаков мат. операций при переносе
Сообщение08.04.2020, 00:58 
novichok2018 в сообщении #1452186 писал(а):
Дублирование при переносе вручную знака умножения как \times - это стандартный способ, или есть другой? Увидел здесь символы \* - сразу не нашёл про них, как они используются, есть применения при ручном наборе?

Символ \* нужно использовать в выражениях типа E = m \* c^2 ($E = m \* c^2$). В этом случае в обычных условиях он не выводится (или заменяется на узкий пробел), но если в этом месте возникнет перенос, то \* заменится знак умножения $\times$.

 
 
 [ Сообщений: 22 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group