Formataçõs/LaTeX
Eu procurei seguir ao máximo o guia de estilo do sistema métrico, que, aliás, recomendo a todos que leiam antes de elaborarem seus relatórios. É um material bem explicado e bastante útil. Caso encontrem alguma violação desse estilo, por favor, abram uma issue no repositório para me avisar.
Ordem de Grandeza
Por padrão, as medidas serão formatadas seguindo a notação científica, ou seja, a ordem de grandeza será ajustada para que o valor nominal esteja entre 1 e 10. Na maioria dos casos, esse é o comportamento desejado, mas, em algumas situações, podemos querer representar valores como dezenas ou centenas de vezes uma unidade (acima disso, recomenda-se alterar a unidade). Para isso, basta digitar E seguido da ordem de grandeza.
comprimento_de_onda=Medida(500,'nm',1)
print(comprimento_de_onda)#(5,00 ± 0,01)x10² nm
print(f"{comprimento_de_onda:E0}") #(500 ± 1) nm
print(f"{comprimento_de_onda:E3}") #(0,500 ± 0,001)x10³ nm
massa=Medida(5,'tons',0.1)
print(f"{massa:E-1}") #(50 ± 1)x10⁻¹ ton
Unidades
Já abordamos um pouco sobre unidades na seção de introdução. Basicamente, o projeto utiliza a biblioteca pint para realizar as conversões. Caso desejem saber mais sobre as unidades suportadas e como formatá-las, sugiro que consultem a documentação do Pint. Uma funcionalidade adicional é que, ao digitar si na representação de uma medida, ela será exibida no Sistema Internacional (SI).
De modo geral, é extremamente raro encontrar uma unidade que o Pint não suporte ou não consiga interpretar. Porém, um detalhe importante é que o Pint é uma biblioteca desenvolvida em inglês. Assim, se você optar por escrever unidades por extenso (embora eu pessoalmente prefira as abreviações), ele não reconhecerá metro, mas sim meter.
print(imc) # (2,45 ± 0,03)x10⁻³ kg/cm²
print(f"{imc:kg/m²}") # (2,45 ± 0,03)x10¹ kg/m²
print(f"{imc:g/cm²}") # (2,45 ± 0,03) g/cm²
print(f"{imc:si}") # (2,45 ± 0,03)x10¹ kg/m²
print(f"{imc}")
LaTeX
Ao configurar a formatação para LaTeX, o resultado será gerado no formato LaTeX. Embora não seja agradável para leitura humana, será muito útil para o seu Overleaf ou TexLive.
print(f"{gravidade:si}") #(9,73 ± 0,07) m/s²
print(f"{gravidade:si_latex}")
'''(9,73 \, \pm \, 0,07) \,
\frac{\mathrm{m}}{\mathrm{s}^{2}}'''
Para os curiosos, o renderizado fica assim:
Combinando Formatações
Para combinar formatações, basta adicionar um underscore _. É importante mencionar que a unidade sempre deve ser especificada antes dos outros formatos.
g=Medida(9.8,'m/s²',0.1)
print(f"{g:E2}") #(0,098 ± 0,001)x10² m/s²
print(f"{g:E2_latex}") #(0,098 \, \pm \, 0,001)\times 10^{2} \, \frac{\mathrm{m}}{\mathrm{s}^{2}}
print(f"{g:cm/s²_E2_latex}") #(9,8 \, \pm \, 0,1)\times 10^{2} \, \frac{\mathrm{cm}}{\mathrm{s}^{2}}
print(f"{g:E2_cm/s²}") #❌ unidade deve vir primeiro!