Atom에서 latex용 패키지 만들기
동기
Atom에서 latex를 쓰고 있지만, 많이 사용한다
\itemize
라든지 \item
Atom이라면 어떻게 할 수 있을까 해 볼까.목표
tex 파일을 편집하는 동안
alt-enter
로 줄 바꿈하고 \item
, alt-shift-enter
\begin{itemize}
\item %ここにカーソル
\end{itemize}
같은 느낌으로 하고 싶다.
환경
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G65
$ atom -v
Atom : 1.29.0
Electron: 2.0.5
Chrome : 61.0.3163.100
Node : 8.9.3
프로그램 만들기
Atom의 API 이나 기존의 패키지를 참고로 만든다.
init.coffee
atom.commands.add 'atom-text-editor[data-grammar~="latex"]', 'custom:newline-item', ->
editor = atom.workspace.getActiveTextEditor()
view = atom.views.getView editor
editor.transact =>
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\item ')
atom.commands.add 'atom-text-editor[data-grammar~="latex"]', 'custom:newline-itemize', ->
editor = atom.workspace.getActiveTextEditor()
cursor = editor.getLastCursor()
view = atom.views.getView editor
editor.transact =>
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\begin{itemize}')
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\item ')
pos = cursor.getBufferPosition()
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\end{itemize}')
cursor.setBufferPosition(pos)
keymap.cson
'atom-text-editor[data-grammar~="latex"]':
'alt-enter': 'custom:newline-item'
'alt-shift-enter': 'custom:newline-itemize'
custom:newline-itemize
의 '\\item '
이나 '\\end{itemize}'
의 들여쓰기가 자동으로 행해지므로, 조사하면 language-latex
패키지에 의한 것으로 판명.패키지 만들기
병아리 만들기
Atom 내에서
cmd-shift-P
→ Package Generator: Generate Package
→ /Users/aaaa/github/latex-itemizer
$ tree
.
|-- keymaps # ショートカットキー
| `-- latex-itemizer.json
|-- lib # 実装
| |-- latex-itemizer-view.js
| `-- latex-itemizer.js
|-- menus # メニューバーとコンテキストメニュー
| `-- latex-itemizer.json
|-- package.json # パッケージの基本情報
|-- spec # テスト
| |-- latex-itemizer-spec.js
| `-- latex-itemizer-view-spec.js
`-- styles # スタイル
`-- latex-itemizer.less
이식
기존 패키지를 참고로 만들어 이번 프로그램은 이런 느낌.
$ tree
.
|-- keymaps
| `-- latex-itemizer.cson
|-- lib
| `-- latex-itemizer.coffee
`-- package.json
lib/latex-itemizer.coffee
{CompositeDisposable} = require 'atom'
module.exports =
subscriptions: null
activate: ->
@subscriptions = new CompositeDisposable
@subscriptions.add atom.commands.add 'atom-workspace', {
'latex-itemizer:newline-item' : => @newline_item()
'latex-itemizer:newline-itemize' : => @newline_itemize()
}
deactivate: ->
@subscriptions.dispose()
newline_item: ->
editor = atom.workspace.getActiveTextEditor()
view = atom.views.getView editor
editor.transact =>
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\item ')
newline_itemize: ->
editor = atom.workspace.getActiveTextEditor()
cursor = editor.getLastCursor()
view = atom.views.getView editor
editor.transact =>
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\begin{itemize}')
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\item ')
pos = cursor.getBufferPosition()
atom.commands.dispatch view, 'editor:newline'
editor.insertText('\\end{itemize}')
cursor.setBufferPosition(pos)
keymaps/latex-itemizer.cson
'atom-text-editor[data-grammar~="latex"]':
'alt-enter': 'latex-itemizer:newline-item'
'alt-shift-enter': 'latex-itemizer:newline-itemize'
package.json
{
"name": "latex-itemizer",
"main": "./lib/latex-itemizer",
"version": "0.0.0",
"description": "For latex-itemizer",
"activationCommands": {
"atom-text-editor[data-grammar~=\"latex\"]": [
"latex-itemizer:newline-item",
"latex-itemizer:newline-itemize"
]
},
"repository": "https://github.com/atom/latex-itemizer",
"license": "MIT",
"engines": {
"atom": ">=1.0.0 <2.0.0"
},
"dependencies": {
"atom-package-dependencies": "latest"
},
"package-dependencies": {
"language-latex": "1.1.1"
}
}
newline_itemize
를 깨끗이 쓰고 싶지만, 움직이기 때문에… package.json
에 따라 패키지 부분 "package-dependencies"
잊지 마세요. 테스트
ctrl-alt-cmd-L
에서 Atom을 다시 읽고 tex 파일에서 시도하지만 'alt-enter': 'latex-itemizer:newline-item'
가 작동하지 않습니다.키맵이 Atom 본래의 것과 중복하고 있는 것이 판명.
Overriding core keybindings? - support - Atom Discussion 을 참고로
keymaps/latex-itemizer.cson
를 수정.keymaps/latex-itemizer.cson
'.editor[data-grammar~="latex"]:not([mini])':
'alt-enter': 'latex-itemizer:newline-item'
'alt-shift-enter': 'latex-itemizer:newline-itemize'
이것으로 잘 갔기 때문에 끝.
공개편에
Reference
이 문제에 관하여(Atom에서 latex용 패키지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/horyu/items/d3c326f546e5ee9f3333텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)