func.4 objects

進捗しない日記 プログラミングとか

英語のPDFにおいてテキストをコピーした際の改行をどうにかする手法の検討

ABSTRACT

ゼミをサボり通していたためあと4日で8本の英語論文を和訳してまとめて🍤デンスを作る必要が生まれ現実逃避のためこの記事を書いています。
改行を取っ払う方法は色々あるけどクリップボードにある文章の改行をとりあえず全部自動で取っ払ってくれる常駐ツールがあると嬉しいよねという内容です。
10/15追記:exe化したものを置いておきます。
https://1drv.ms/u/s!AhfgzZr64Vl0mZtTQGqley398yYFUQ?e=OcuSHe
Windows以外のPCで論文を書こうとする人の殆どはPythonの環境があると思うのでコードコピペでお願いします。

INTRODUCTION

英語論文を翻訳するとき、まぁもちろん英語がスラスラ読めればそれで良いのですがGoogle翻訳より精度の低い翻訳しかできない身としてはGoogle翻訳を大いに参考にしたいわけです。
Google翻訳はpdfを読み込んで翻訳してくれる機能があるのですが、これ微妙に使い勝手が悪く重いpdfはダメだったり文字の位置がずれたり改行が考慮されなかったりします。従って依然pdfの英語テキストをコピーして翻訳のところに貼っ付ける必要があるわけでして、その時コピーした文章が微妙な感じに改行されると翻訳がちょっと気持ち悪くなって許せないわけです。というわけで本研究ではそれをどうにかする方法を調べた結果をまとめたりやりたいことをやっていきます。

Related Works

簡単な方法はコピーしたテキストをブラウザのURL入力欄にぶち込む方法です。ここは1行に圧縮されるので単に改行が除去されます*1。コピペする手間がちょっと発生しますが特殊なソフトを使わないのが強みでしょうか。

他にソフトやサイトを利用する方法はいくつかあります。例えばこちらではShaperと言う、まさに謎改行を整形するWEB appを公開されています。
dream-exp.hatenablog.com

また、こちらのサイトではJavascriptを用いたツールを公開されています。
www.robotech-note.com

METHOD

これまでの手法は一度コピーした文章を何かしらに貼り付けて整形しコピーするという手順なわけですが、クリップボードを監視してそれっぽい文章がクリップされたら自動で整形してくれる常駐型ソフトだとこの手順をスキップできてちょっとうれしいのでそれを作ります。

Setup

Windowsで作業していて、手元にあったのがpython 3.6.5だったのでこれを使います。
pyperclipというパッケージでクリップボードをいい感じに弄れそうなのでこれをインストールします。

pip install pyperclip

Procedure

適当なファイルを作って以下のコードをコピペして動かします。

import pyperclip, time
clip = pyperclip.paste()
temp = "."
while True:
    time.sleep(0.1)
    clip = pyperclip.paste()
    if clip != temp:
        line = " ".join(clip.splitlines())
#       line = ".\n".join(line.split(". "))
        pyperclip.copy(line)
        temp = line
        clip = line
        print("Removed extra lines")

RESULT

動かしている間は、コピーした文字列の改行を全部取っ払った文字列がクリップボードに上書きされるようになります。また、コメントアウトしている部分を戻すとピリオドに合わせて改行されます。一見便利なようですがAve.やAvg.の省略記号としてのピリオドでも改行する罠に気付き消しています。

DISCUSSION AND CONCLUSIONS

個人的にはそれなりに便利なものができたのですが、この記事とコードを書くのに大体2時間ぐらいかかっていて、このコードを使うことで2時間分英語論文のまとめが効率的になりそうかという微妙な感じがします。まぁやりたいことができたので満足です。

Doki Doki Literature Club!キャラクターファイルのデコード

久しぶりに書こうかなと思ったので。
非公式日本語化mod導入した後の内容です。
いくつかのネタバレを含むので既プレイ向けです。
未プレイの方はSteamで無料なので是非。どんなゲームかはタグを見れば分かるはず。
store.steampowered.com

特に内容に関しての考察はしません。

続きを読む

Unityで"オブジェクトに隠れる"テキストを空間に表示させる

多分普通に使ってる人に鼻で笑われることなんだろうけど、自分は結構ハマったのでメモ


Unityで3D Text使うと、なぜかオブジェクトの後ろに隠れなくて困った困った
f:id:f4sn:20150402165256p:plain

f:id:f4sn:20150402165750p:plain
自己主張が激しい
多分表示順のZを後ろにするとどうにかなる予感がするんですが、いまいち記事が見つからなかった為とりあえず保留

結論から言えば3D Text使わないでUIのText使えばなんとかなったという話です。

ただこのUIのText、使うのに色々罠があったので自分が詰まったとこメモっておきます。

Canvasが立体的に動かない!

Render ModeをScreen SpaceからWorld Spaceにすれば動く
f:id:f4sn:20150402173153p:plain

文字がぼやぼや!

Font Sizeを大きくScaleを小さくすれば良い具合にできる
f:id:f4sn:20150402173420p:plain

3D Textもデフォだと文字がぼやぼやですけど、同じ方法で良い感じにできます。
(というかCanvas、デフォ大きすぎでは...)


ちなみにFont Sizeを大きくすると文字が消える!って人は、
Horizontal OverflowとVertical OverflowをOver flowにすると見えるようになります。f:id:f4sn:20150402173515p:plain

見えるようになる...とういうよりは段組の設定を変えて幅の溢れを許容したって感じかな?


なにはともあれ、オブジェクトに隠れるテキストが表示できたのでめでたしめでたし。

ワンライナーで有名人の年齢取得

こいつワンライナーしか書いてないんじゃねぇの

require "open-uri"
open(URI.escape("http://ja.wikipedia.org/wiki/#{gets.chomp}")){|u|puts u.read.scan(/..歳)/)}

Unityは公開レベルに至ってないのでもうしばらく。

ワンライナーで青空文庫検索

しょぼくても更新した方が良いなぁと思ったので。

#coding : utf-8
require 'net/http'
require 'open-uri'
require 'httpclient'

p (HTTPClient.new).get_content("https://www.google.com/search?hl=ja&lr=lang_ja&ie=utf-8&num=20&complete=0&as_dt=i&as_sitesearch=www.aozora.gr.jp&as_q=#{gets.chomp}").scan(/http:\/\/www.aozora.gr.jp\/cards\/\d{0,10}\/card\d{0,10}.html/).uniq

おしまい!