カクヨムのルビ記法は
寿限無
傍点
のようになります。が、クロスフォリオは上の普通のルビはそのままいけるのですが、現状(2025.02.17現在)では「傍点」は対応していません。タイトルに有るように[[rb:傍点>・・]]のようにしなければならないようです。
そんなのいちいちやってられませんし、ヒューマンエラーの源泉でしかないので、ツールで一発でできるようにしてみました。とはいえ、完全個人用なので、おまじないの一つも入れてませんし、例外処理も入ってないのは御愛嬌。15分で書いたからねwww
用意するのは、なんかのエディタ(個人的にはVSCode)とPython実行環境だけです。この辺のやり方は調べてください。VSCode使うならこの辺が有用かと。
そして、たとえば「D:\python\xfolio」などのフォルダを作り、そこに「input」フォルダと「output」フォルダを作ります。そして「input」フォルダに任意の.txtファイルを保存しておきます。いくつでも良いです。
で、xfolio.pyなどと言うファイル(別にaaaa.pyでもいい)を作成して以下を貼り付けてください。
で、<と>のところを 《2つと 》2つ に置換してください。末尾に.txtに変換したファイルも載せたので参照のほど。
import os
import re
def convert_text(text):
def replace_ruby(match):
word = match.group(1)
dots = '・' * len(word)
return f"[[rb:{word}>{dots}]]"
text = re.sub(r'<(.*?)>', replace_ruby, text)
return text
def process_file(input_path, output_path):
with open(input_path, 'r', encoding='utf-8') as f:
content = f.read()
converted_content = convert_text(content)
os.makedirs(os.path.dirname(output_path), exist_ok=True)
with open(output_path, 'w', encoding='utf-8') as f:
f.write(converted_content)
def process_all_files(input_dir, output_dir):
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.endswith(".txt"):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
process_file(input_path, output_path)
print(f"変換が完了しました: {output_path}")
input_dir = "input"
output_dir = "output"
process_all_files(input_dir, output_dir)
これで環境ができたのであとは、この.pyを実行するだけです。できれば、python -m venv venv 等適当に仮想環境作った方が後々いいです。
pythonは手軽なのでちょっとしたツールを作るうえで便利ですし、実行環境もあったほうが何かと良いです。
ぜひ挑戦してみてください。
コメント