2018年4月18日水曜日

【Mac】濁点が2文字になるテキストを綺麗にするAutomatorワークフロー

Macで例えばPDFのテキストをコピーして使おうとすると、濁点や半濁点が二文字になることがあります。「ば」が「は゛」になる等で、これは「UTF-8-MAC」という文字コードだそうです。これを1文字ずつ修正するのは面倒なので、Automatorで自動的に修正して「UTF-8」に変換するワークフローを作りました。
ワークフローの順序は次の通り。
  1.  UTF-8-MACのテキストを入力
    • Automatorアクション「テキストの入力を求める」
  2. 半角スペースを削除
    PDFの場合は文字の折り返しが半角スペースになるため、それを削除するステップを入れています。
    • Automatorアクション「シェルスクリプトを実行」で「sed -e 's/ //g'」を設定
  3. 文字コードをUTF-8に変換
    • Automatorアクション「シェルスクリプトを実行」で「iconv -f UTF-8-MAC -t UTF-8」を設定
  4. クリップボードにコピー
    • Automatorアクション「クリップボードにコピー」
  5. 通知を表示
    機能的には不要なステップですが、おまけで入れています。
    •  Automatorアクション「通知を表示」でタイトルに「問題なく変換できました」、メッセージに「テキストはクリップボードに保存されています」を設定。タイトル、メッセージは任意で分かりやすいものを入れてください。
作ったワークフロー


参考サイト

2016年11月26日土曜日

【Affinity Designer】Grade UI Kitをインポートする

Affinity Designer 1.5 (AD)では Grade UI Kitが無料で使えるようになりました。そのインポートがすぐに分からなかったのでメモしておきます。


  1. Grade UI Kitのダウンロード
  2. Assetsのインポート
    1. ADで「表示>スタジオ>アセット」にチェックを入れます。
    2. アセットのメニューから「アセットのインポート」、ダウンロードしたファイル(Grade UI.afassets)を選択します。
  3. Palettesのインポート
    1. スウォッチのメニューから「パレットのインポート」、ダウンロードしたファイル(Grade UI - Fills.afpalette、Grade UI - Gradients.afpalette)を選択します。

      なお、インポートの方法にも3種類あります。
      1. アプリケーションパレット:基本これで良いのでは。AD/APのファイルならどれでもパレットが使えるようになります。
      2. ドキュメントパレット:いま使っているファイルのみ
      3. システムパレット:OSX全体で使える?試してないので分かりません。
以上です。

2016年11月10日木曜日

PowerPointで作った図をWordで綺麗に印刷できるように貼り付ける

仕事柄、PowerPointで作った図をWordに貼り付けることがよくあります。しかし普通にPowerPointで「図として保存」から画像(PNG)を書き出すと、解像度が 96dpi になってしまい印刷には向きません(印刷には300dpi以上が適切)。
そこで、解像度を落とさずにWordに貼り付けられる方法を調べました。WindowsとMacどちらも調べて、方法は違うのですがともに出来るようになったのでメモしておきます。Windowsでは3つの方法があります。

調べた環境は下記のとおりです。
使用OS PowerPoint Word
Windows PowerPoint 2016 Word 2016
Mac PowerPoint for Mac ver. 15.27 Word for Mac ver. 15.27

Windowsでの方法 1: Windowsメタファイルで保存

すべての作業がWindows内のOfficeアプリケーションの中だけで済むのであれば、この方法が最もファイルサイズも小さく描画が綺麗に維持されます。PowerPointで作った図形や文字はベクター画像として保存されています。ただし写真などのビットマップ形式ファイルは当然ベクター形式にはなりません。(ベクター形式とビットマップ(ラスター)形式の違い
WindowsのOffice環境だけであれば、ベストな選択肢のWindowsメタファイルですが、他のアプリケーション(AdobeやMacユーザーへ渡すなど)には向いていません。作ったwmf画像をAdobe Illustratorで開くと文字化けすることがありますし、Macでは開くことができません。ですので将来汎用的に使いたい場合は、ここで作ったメタファイルからJPGやPNGに書き出すことになります。とはいえ基本WindowsでOfficeしか使っていない人にはこの方法をお勧めします。
  1. PowerPointで作成した図を選択し、右クリックして「図として保存」を選ぶ
  2. 「拡張Windows メタファイル(*.emf)」または「Windwsメタファイル(*.wmf)」を選択
    • 「拡張」と名前が付いているだけあって、emfのほうが規格として新しく、多くの場合は改良版であるemfの方が良いはずです。が、説明によるとたまに開けない場合もあるらしい…。でもまずはemfで書き出しましょう。
  3. 作ったファイルをWordファイルにドラッグ&ドロップ

Windowsでの方法 2: 大きめに作ってPNGで保存

この方法はベクター形式ではなく、ビットマップ形式で画質を保ったまま印刷用ファイルを作成する方法です。
  1. PowerPointで図を作成する際に、最終的な図のサイズの約3倍の大きさで作る。
    • 上で述べたように「図として保存」は96dpiで書き出されます(この設定を変更する方法もあるのですが高度なのであまり一般的ではありません)
    • そこで、96dpiでもWord内で約3分の1の大きさに縮小すれば、約300dpiになる、という計算です。
    • たとえばA4用紙のなかに幅 5cm × 高さ 7cm の図を入れたいと思った場合、PowerPointの「デザイン > ユーザー設定 > スライドのサイズ」を開き、3倍の幅 15cm × 高さ 21cm のスライドにします。
    • ちなみにフォントサイズも3倍で作りましょう。最終的に10ptぐらいにしたかったら、30ptで作ることになります。
    • つまり、注意点としては図を最終的に入れる場所のサイズが分かっている必要があります。
    • なお、2倍のサイズで作っても、簡単な印刷物なら十分です。スライドのサイズを大きくするほどファイルサイズも大きくなりますので、その辺りは好みで作ってください。

  2. 作った図を右クリックして「図として保存」からPNGまたはJPGで書き出す。基本、PNGで良いでしょう。
  3. 出来上がった画像ファイルをWordにドラッグ&ドロップで配置し、マウス操作で3分の1の大きさになるよう縮小する。

Windowsでの方法 3: PDFにしてAcrobat Readerのスナップショット機能を使う

2とは違ってサイズを考えずに作り始めたときでも使える方法です。
  1. PowerPointで図を作成し、「ファイル > エクスポート > PDFまたはXPS形式で発行」からPDFで保存
  2. 作成したPDFをAcrobat Readerで開く。
  3. Acrobat Readerの設定を変更・保存。
    • 「環境設定 > 一般 > スナップショットツール画像に固定解像度を使用」にチェックを入れ、任意の数値(約200-300)を入力。
  4. 「編集 > スナップショット」を選ぶと十字マークが出るので、書き出したい領域をドラッグ&ドロップで選択します。すると「選択した領域がコピーされました」と表示されます。
  5. Wordに移り、画像を挿入したい場所で「貼り付け」をします。

Macでの方法: PDFを直接貼り付け

この方法でPDFから挿入した画像はベクター形式です。つまり、Windowsの方法 1でWindowsメタファイルでベクター形式を扱う方法を説明をしましたが、WindowsメタファイルはMacでは使えません。そこでPDFに書き出してから挿入することでベクター形式として貼り付ける、という方法が使えるのです。
ちなみにこのPDF挿入方法は、なぜかWindowsでは使えません…PDFファイルを「挿入」メニューから選んでもPDFが表示されませんし、ドラッグ&ドロップで貼り付けようとしてもアイコンが表示されるだけです。WindowsでPDFを貼り付けようと思ったら上記3の方法になるんでしょうね。
  1. PowerPointで図を作成し、印刷機能からPDFとして保存します。
  2. Wordに移り、「挿入 > 写真 > ファイルからの画像」でそのPDFファイルを選択します。
    • 注)Word文書にドラッグ&ドロップで挿入すると低解像度で読み込まれてしまいます。
  3. なぜか裏表逆、180度ひっくり返った形で挿入されます(たまにうまく行くこともある)。
  4. 「図の書式設定」の機能を使って適宜回転・反転させてください。






2016年8月5日金曜日

BlenderをPythonで動かして重力波を描く

重力波を描きたい、と思いたち、どうにかBlenderでそれっぽいのを作れたのでメモ。

これが完成版。



参考にしたサイト



プログラム(Python)

import bpy
import numpy as np

# 一旦すべてのオブジェクトを消す
for item in bpy.context.scene.objects:
    if item.type == 'MESH':
        bpy.context.scene.objects.unlink(item)
for item in bpy.data.objects:
    if item.type == 'MESH':
        bpy.data.objects.remove(item)
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)
for item in bpy.data.materials:
    bpy.data.materials.remove(item)

theta = 0

# mesh arrays
verts = []
faces = []

# mesh variables
numX = 200
numY = 200

# wave variables ここは好きに変更してください
amp = 15 # 振幅
lam = 3 # 波長
scale = .15 # 数値が小さければ細かいグリッドになる

#fill verts array
for i in range (-numX, numX):
    for j in range(-numY, numY):

        x = scale * i
        y = scale * j
        R1 = amp * np.cos(2 * np.arctan(y/(x + 0.00001)) - theta + lam * np.sqrt(x**2 + y**2))
            # 2は中心から出る波形の数
        R2 = 60 + np.sqrt(x**2 + y**2)
        z = R1/R2

        vert = (x,y,z)
        verts.append(vert)

#fill faces array
count = 0
for i in range (0, 2*numY * (2*numX-1) ):
  if count < 2*numY-1:
      A = i # 1番目の点
      B = i+1 # 2番目の点
      C = (i+2*numY)+1 # 3番目の点
      D = (i+2*numY) # 4番目の点

      face = (A,B,C,D)
      faces.append(face)
      count = count + 1
  else:
      count = 0

#create mesh and object
mesh = bpy.data.meshes.new("wave")
object = bpy.data.objects.new("wave",mesh)

#set mesh location
object.location = bpy.context.scene.cursor_location
bpy.context.scene.objects.link(object)

#create mesh from python data
mesh.from_pydata(verts,[],faces)
mesh.update(calc_edges=True)