2016-12-11 7 views
2

Я играл с уравнениями для электрических систем с помощью Sympy и уже довольно много управляю, чтобы уравнение выглядело красиво и прилично: все значения содержат единицы, которые следуют за ними даже с помощью комбинаций уравнений. Это очень важно, я думаю, потому что цель состоит в том, что документ, который я пишу, чтобы рассчитать мои ценности, является окончательным документом, который я буду представлять (я использую Jupyter-записные книжки и все это PDF-файл).Как отображать символ процента с помощью SymPy и LaTeX

Теперь пришла моя проблема: как-то Sympy решила, что% не является единицей сама по себе (правда, она не имеет измерения) и что нет смысла ее показывать - вообще. Кажется, даже разобрал мои объявленные единицы, чтобы удалить любой процентный символ, который может появиться ...

До тех пор, пока я согласен, что у% нет измерения, символ по-прежнему существует по какой-то причине - если это было бесполезно, этого не было бы для начала. Людям нравится читать проценты с хорошим% в конце, потому что он уже указывает, что результат умножен на коэффициент 100. Он также делает результат более читаемым.

В коде:

# imports 
import sympy as sp 
from sympy import init_printing 
init_printing(use_latex=True) 
init_printing(use_latex='mathjax') 
import sympy.physics.units as u 
from IPython.display import display 

#define unit 
percent = u.Unit('ab%c', 'ab%c')*100 # a,b and c are only there for debug. Only % is needed 

#define dummy equation 
Error_= sp.symbols('Error') 
total_error = 1 # error is not yet in %. 1 means 100% 
Eq = sp.Eq(Error_, total_error*percent) 
display(Eq) 

Результат: Ошибка = 100ab

Почему все после% явно удалены? Я даже старался не импортировать все юниты в глобальное пространство имен, поэтому, если нужно было обнаружить%, не нужно ли u.%?

PS: У меня есть длинная история 3 дня (всего), работающая с Python. Я обычно больше парень C. Надеюсь, я не пропустил глупую ошибку.

ответ

3

Это работает для меня:

percent = u.Unit('percent', r'\%') * 100 

Скорее всего % должны быть экранированы, как это должно быть экранированы в LaTeX, а также.

+0

Добро пожаловать :) Заметьте, что 'u.percent' также существует, но его значение противоположно: оно равно 1/100 (что на самом деле означает' u.percent': '25 * percent = = 0,25'). –