2017년 12월 21일 목요일

Microsoft Word의 고급 찾기 및 바꾸기 기능을 이용한 특정 단어의 자동 이탤릭체 변환


목적: 조금이라도 편하게 원하는 특정 단어만 이탤릭으로 바꾸기.
가정사항: 글의 최종 완성본은 Microsoft Word 편집에서 한다.

1) Microsoft Word에서 글을 작성하면서 필요에 따라서 그때 그때 단어를 이탤릭체로 바꿔주기.

  • 문제점: 나는 Microsoft Word에서 모든 컨텐츠를 생성하는 경우는 거의 없다.
  • 반론: 다른 소프트웨에서 원하는 단어 이탤릭으로 작성해서 Microsoft Word에 복사해서 넣으면 되지.
  • 반론의 문제점: 이탤릭체 유지하려면 서식을 그대로 가져와야하고, 그렇게 되면 줄 간격이라든지 폰트라든지 또 손봐야 할게 한두가지가 아니다.

2) Microsoft Word 기능 중에 '자동 고침 > 입력할 때 자동 서식'의 옵션에서 '_글자_' 기능을 체크

  • 장점: 어떤 소프트웨어를 사용하든 이탤릭으로 표시하고 싶은 단어의 앞 뒤에 '_'를 넣어주면 Word에서 열때 이탤릭으로 적용된다.
  • 문제점: 잘 안된다. 이 기능 자체도 Microsoft Word에서 글을 작성하고 있는 도중에 '_'를 넣어주면 잘되지만, 다른 소프트웨어에서 작성한 것을 가져오면 적용 안되는 경우가 대부분이다.
  • 안타까운점: Scrivener 2에서는 글을 작성하는 중간에 원하는 단어의 앞 뒤로 '_'를 넣어주고, compile 옵션을 잘 조정하면 됐는데, Scrivener 3에서는 그 옵션이 없어졌다.

3) 전체를 이탤릭체로 쓰든지 이탤릭체를 안쓰기

  • 문제점: 이럴 수 없다.

4) LaTeX이나 MultiMarkdown쓰기

  • 문제점: 안쓰거나 못쓰는 사람 많다.

5) Microsoft Word에서 최종 편집할 때 원하는 단어만 수작업으로 이탤릭체으로 바꾸기

  • 문제점: 이탤릭으로 바꿔야 하는 단어가 많으면 시간이 많이 걸리고 귀찮다. 이탤릭으로 바꿔야 하는 단어를 까먹을 수도 있다.
6) Microsoft Word에서 최종 편집할 때 원하는 단어만 자동으로 이탤릭체로 바꾸기
  • 조건: 어떤 소프트웨어를 사용하든지 이탤릭체로 바꾸려고 하는 단어의 앞 뒤에 '_'를 미리 넣어두기.
  • 방법
  1. Microsoft Word의 고급 찾기 및 바꾸기에서 바꾸기 탭
  2. '패턴 일치(와일드카드) 사용' 옵션 체크
  3. 찾을 내용: _(<[A-Za-z])([! ][!\;][!^13]@)([a-z0-9]>)_
  4. 바꿀 내용: \1\2\3
  5. 아래 바꾸기 메뉴에서 서식 > 글꼴 > 글꼴 스타일 > 기울임꼴 선택
  6. 바꾸기 실행
  • 부연
  1. 내가 몰라서 그런건지 Microsoft Word에서 일반적인 정규식(Regular Expression) 적용이 잘 안됨.
  2. 대신 패턴일치(와일드카드)가 있음.
  3. _(<[A-Za-z])([! ][!\;][!^13]@)([a-z0-9]>)_, \1\2\3 이게 그건데,
           - [A-Za-z]: 정규식이과 동일하게 A에서 Z, a에서 z
           - <: ~로 시작하는 거
           - !: 아닌것
           - \;: ;
           - ^13: 엔터(리턴)
           - @: 뭔가
           - >: ~로 끝나는 거
           - \1: 첫번째 그룹 (하나의 그룹은 ()로 구분)
           - \2: 두번째 그룹
           - \3: 세번째 그룹
           - _(<[A-Za-z])([! ][!\;][!^13]@)([a-z]>)_: _가 맨처음에 나오고 알파벳 대문자나 소문자로 시작하고 중간에 빈공백 없고 ;도 없고 리턴도 없는데 알파벳 소문자로 끝나면서 맨마지막에 _가 붙어 있는 것.
          - \1(<[A-Za-z])
          - \2([! ][!\;][!^13]@)
          - \3: ([a-z]>)


  • 추가
           - '*'는 Word의 패턴검색에 사용되는 캐릭터이다. 따라서, '*'를 검색 조건에 넣고 싶을때는 escape character를 추가 해야하는데, 여기서는 '\'이다. 따라서 이탤릭을 '_'가 아닌 '*'를 식별자를 사용하고 싶을때는 다음과 같이 하면 된다.: \*(<[A-Za-z])([! ][!\;][!^13]@)([a-z0-9]>)\*


좀더 자세한 내용은 여기 또는 here 참조.

Typinator에서 특정 변수 입력을 통해 글 확장하기

특정 단어를 typinator 확장에서 활용하기 위해서는 'Input field'를 이용.


  • Input field 세팅

  1. 어떤 종류의 input field를 사용할지 선택 - Text Field
  2. 식별 아이디: Label이 아이디의 역할을 함.
  3. default value에는 default value를 넣고.
Fig. 1. Input field에 대한 UI

  • 예제

Fig. 2는 Fig. 1을 이용하여 활용 값을 입력한 경우.
Fig. 2. 변수가 들어가 있는 Text Field
이때의 코드는
{{?Enumeration type entity<{clip}>}}

즉, {{?Input}}하면 'Input'의 label을 갖는 Text Field 생성.
{clip}은 가장 최근의 클립보드의 것을 서식없이 가져오기.

  • 적용
1. 코드

WHERE
Correct{{?Attribute}} : NOT(EXISTS({{?Attribute}})) OR
({{?Attribute}} <> {{?Enumeration type entity<{clip}>}}.USERDEFINED) OR
(({{?Attribute}} = {{?Enumeration type entity<{clip}>}}.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType));
CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR
('IFC4add2RailwayBeta.{/Uppercase {{?Type entity<{clip}-Enum>}}}' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType));

Text Field는 총 3개: {{?Attribute}}, {{?Enumeration type entity}}, {{?Type entity}}
이때의 default value는 각각 null, {clip}, {clip}-Enum
{{?Type entity}}의 경우에는 입력 받은 값을 모두 대문자로 바꿈 (/Uppercase)
즉, {{?Enumeration type entity}}와 {{?Type entity}}에서는 default 값으로 클립보드에 있는 내용을 사용함.

2. 적용결과
일단 사용할 문자열을 클립보드에 넣어놓고 (여기서는 testTestTEST) abbreviation을 활용해서 실행시키면, Fig. 3과 같은 창이 뜨고,

Fig. 3. Input field가 반영되어 실행되는 Typinator UI

여기에 적절한 값을 넣으면 다음과 같은 결과가 나옴.

WHERE
CorrectElementPartType : NOT(EXISTS(ElementPartType)) OR
(ElementPartType <> testTestTEST.USERDEFINED) OR
((ElementPartType = testTestTEST.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType));
CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR
('IFC4add2RailwayBeta.TESTTESTTEST-ENUM' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType));