TeXめんどい
大学に入ってから初めてTeXというものをつかった.便利で大変良い.まだB1なので行列計算とかもまだ簡単.でも手書きでレポート出すなら簡単で,ぱっとやって提出できるけど,TeXだとそうは行かない.紙に計算して,TeXの形式に打ち込んでとまあまあめんどくさい.慣れてないし,補助ツールがぐぐってもみつからない.TeXの形式で渡したら自動で計算してくれるところとかさがしたけどあんまりしっくりこない.
つくった
ということで行列を入力したら計算してくれるやつを作った.
import numpy as np
# tex
def tex_text(A):
A_mat = ""
for l in A:
l_tex = ""
for r in l:
if r == int(r):
l_tex += str(int(r))
else:
l_tex += str(r)
l_tex += "&"
l_tex = l_tex[:-1] + r"\\"
A_mat += l_tex
A_mat = r"""\left(\begin{array}{ccc}@\end{array}\right)""".replace("@", A_mat)
return A_mat
# mat input
def input_mat(arg_name, a_line, a_rows):
cal_flag = False
while cal_flag == False:
A = []
print(f"{arg_name} = ")
for i in range(a_line):
print(f'[{i + 1}]', end='')
inputs = list(map(float, input().split()))
if len(inputs) == a_rows:
cal_flag = True
else:
print("Argment Error, input again")
cal_flag = False
break
A.append(inputs)
A = np.array(A)
if cal_flag:
print(tex_text(A))
return A
a_line = int(input("A Lines:"))
a_rows = int(input("A Rows:"))
b_line = int(input("B Lines:"))
b_rows = int(input("B Rows:"))
A = input_mat('A', a_line, a_rows)
B = input_mat('B', b_line, b_rows)
cal_flag = False
while cal_flag == False:
calc = input("what calc:")
if calc == "@":
C = A @ B
cal_flag = True
elif calc == "+":
C = A + B
cal_flag = True
elif calc == "-":
C = A - B
cal_flag = True
print("C:")
print(C)
print("A")
print(tex_text(A))
print("B")
print(tex_text(B))
print("C")
print(tex_text(C))
使ってみた
まあまあ便利.どうせ最初の数週間しかつかわんし,クオリティは求めてない.
新バージョン
行列の授業の最初の方でTeX書くのがめんどくさくて作ったやつを供養https://t.co/FuJjDAVMRJ pic.twitter.com/72vLEqF8fZ
— 電電猫猫 (@nya3_neko2) July 7, 2020