Название «Позиция» не может быть доступно в то время, когда само тело класса анализируется. Я не знаю, как вы используете объявления типа, но PEP 484 Python - это то, что большинство режимов должно использовать, если использовать эти подсказки для печати, скажем, что вы можете просто поместить имя в виде строки в этот момент:
def __add__(self, other: 'Position') -> 'Position':
return Position(self.x + other.x, self.y + other.y)
Проверить https://www.python.org/dev/peps/pep-0484/#forward-references - инструменты, соответствующие этому, будут знать, чтобы развернуть имя класса оттуда и (всегда важно иметь в виду, что сам язык Python ничего не делает из этих аннотаций - они обычно предназначены для анализа статического кода или могут иметь библиотеку / фреймворк для проверки типов во время выполнения - но вы должны явно установить это)
Пакет breqn
предназначен для автоматического разделения длинных уравнений. Он работает очень хорошо в большинстве ситуаций, но он не такой зрелый, как пакет amsmath
. Вот как вы бы написали свое примерное уравнение:
\documentclass{article} \usepackage{breqn} \begin{document} \begin{dmath} f(n)-f(0) = A(n)-B(n)-C(n)-D(n)\cdot d-\left(A(0)-B(0)-C(0)-D(0)\cdot d\right) = A(n)-0-X-D(n)\cdot d-\left(0-0-0-0\right) = A(n)-X-D(n)\cdot d \end{dmath} \end{document}
Обратите внимание, что нет разметки для выравнивания или новых строк, но вывод выглядит практически так же, как если бы вы использовали align
.
Я обычно предпочитаю справляться с этим с помощью пакета amsmath
и структуры split
. Там есть куча полезных структур для разделения уравнений по строкам, но обычно это самый простой в использовании.
Во многих установках TeX уже есть пакет,
Насколько я знаю, это невозможно. При работе внутри дисплея вы несете ответственность за перенос строки. Как сделать разрыв строки и как продолжить на следующей строке в случае скобок - сложный вопрос для людей (посмотрите, например, соответствующий раздел в Гретцере «Математика в LaTeX»), не говоря уже о компьютере.
Пример: когда вы разрываете первую строку после \ left (, вам нужен \ right. в конце и \ left. в начале следующей строки (иначе вы получите ошибку). Более того, вам нужно, чтобы начало следующей строки, чтобы она была правее скобки, созданной \ left (
Стандартный подход, который я использовал в прошлом, - это eqnarray
. См., Например, эту страницу .