2013-07-16 4 views
0

Microsoft Word 2010에서 상호 참조를 수동으로 만들고 싶습니다 (latex \ label - \ ref 또는 \ cite - \ bibliography와 유사). 필자는 Field 함수가 내가 원하는 것보다 거의 excactly 한 것을 발견했다. (구문은 조금 이상하다.)MS Word에서 레이블이 지정된 증분 참조를 만드는 방법은 무엇입니까?

{dischargeRate 세트 {서열 도표}}도 {REF dischargeRate} : 홀 직경 대 방전율 I는 문서에 다음을 입력하면 (파 브래킷 필드 CTRL + F9 제조 상표). 그림은 Reference [{ref authorA}]에서 가져온 것입니다.

결과는 그림 {ref refundrate}에 표시되어 [{ref authorB}] 및 [{ref authorA}]에 이전에 으로 게시되었습니다.

참고 :

{authorA을 {설정 서열이 인용}} {REF authorA}] 저자, 제목, 저널, 올해

{authorB을 {서열이 인용} 설정} {REF authorB}] 저자 제목, 저널 년 위가 생성

:

도 1 : 홀 직경 대 방전율. 그림은 참고 문헌 [1]에 있습니다.

결과는 [1]과 [2]에 이전에 으로 게시되었으며 그림 1에 나와 있습니다.

참고 :

[1] 저자, 제목, 저널, 올해

[2] 저자, 제목, 저널, 올해

이 함께 증가 및 참조를 정의하는 방법이 있나요 세 명령 대신에 하나의 명령 : set, seq 및 ref? 또는 나를 위해 매크로를 어떻게 만들 수 있습니까? 나는 {setOrRef sequencename labelname}에 의해 나중에 참조 될 수있는 숫자 i + 1을 보여주는 {setOrRef sequencename labelname}과 같은 것을 찾고있다.

또한 레이블이 재정의되지 않았는지 확인해야합니다. 예 : 레이블이 없으면 시퀀스 (그림 또는 인용)가 1 씩 증가하고 해당 번호가 레이블에 지정됩니다. 레이블이 존재하면 레이블의 기존 번호가 사용됩니다.

나는 이것을 매크로에 가까워지고 Ms Word를 자동화하는 프로그래밍 질문이라고 생각한다.

답변

0

필드 코드 만 사용하려는 경우 SEQ, SET 및 REF를 사용하지 않는 실용적인 방법은 없다고 생각합니다.

북마크의 존재/부재를 감지하는 데는 여러 가지 어려움이 있습니다. 난 당신이 다음 중첩 된 필드 집합을 사용하여 그들을 회피 할 수 있다고 생각하지만, 나는 이것을 "진짜로"시도했다고 말할 수 없다. 개인적으로 필자는 필드 코딩에서 이러한 종류의 복잡성을 피하려고 노력할 것입니다.

당신이해야 할 일은 QUOTE 필드에 한 번 원하는 북마크 이름을 삽입하는 것입니다. 즉, "bm"대신 "북마크"이름을 대체하면됩니다. 여기서는 순차 참조 번호를 제공하는 이름으로 "s"를 사용합니다. 그것은 실제로 북마크 이름이 아니라 SEQ 이름입니다.

평소처럼 모든 {}은 Windows Word에서 Ctrl-F9를 사용하여 삽입 할 수있는 특수 필드 코드 중괄호 여야합니다. 참조 이름 지정에주의해야합니다 (예 : "AuthorA"및 "AuthorA1"을 사용하지 마십시오. AuthorA2와 같은 다른 SEQ 이름을 사용하지 않아야하며 다른 곳에서 SEQ 이름 s 및 s1을 사용하지 않아야합니다.

{QUOTE {SET b bm}{SEQ "{b}{SEQ {b}}" \r{SEQ "s{={SEQ {b}}-3 \#"1'';''"}}" \h}{SEQ "{b}1" \c}} 

어떻게 작동하는지 분명하지 않으므로 단계별로 설명하겠습니다. 참조 이름을 "AuthorA"라고 가정합니다. 그런 다음

{QUOTE {SET b AuthorA}{SEQ "{b}{SEQ {b}}" \r{SEQ "s{={SEQ {b}}-3 \#"1'';''"}} \h}{SEQ "{b}1" \c}} 

즐겨 찾기 "B는"을 "AuthorA"

{SEQ "{b}{SEQ {b}}"} 

이 AuthorA에 대한 필드의 최초의 세트에서

{SEQ "AuthorA{SEQ AuthorA}"} 

로 확장을 설정 삽입하는 것, 이것은로 확장

{SEQ "AuthorA1" } 

s 후속 세트는

{SEQ "AuthorA2" } 

등으로 확장됩니다.

최종 필드 (실제로 인용에 의해 삽입 된 것)

{SEQ "{b}1" \c} 

이 예

{SEQ "AuthorA1" \c} 

로 확장 항상 AuthorA 대한 문서의 필드의 제 1 세트에 의해 리턴 된 값 .

AuthorA1의 값

\r{SEQ "s{={SEQ {b}}-3 \#"1'';''"}} 

{SEQ {b}} 

의해 설정된 실제 AuthorA위한 필드 (이 단어의 SEQ 필드 평가 중 하나의 최초 세트 2 것

{SEQ AuthorA} 

로 확장 quirks). 그래서

{={SEQ AuthorA}-3} 

는 -1

\#"1'';''" 

가 ''반환 숫자 전환 될 것입니다. 그래서 AuthorA1은

\r{SEQ "s"} 

즉 시퀀스 s의 다음 값으로 설정됩니다.

그 후는,

{={SEQ AuthorA}-3} 

, 0보다 큰 숫자 스위치 반환 '1'등 AuthorA2는

\r{SEQ "s1"} 

로 설정됩니다 그러나 우리는 AuthorA2로 설정하든 상관하지 않는다 .이 숫자 서식 지정의 목적은 {SEQ s}가 특정 "참조 이름"에 대해 이러한 필드 집합 중 하나를 처음 삽입 할 때만 증분되도록하는 것입니다.

이러한 내용을 삽입하려면 블록을 삽입 할 자동 텍스트/작성 블록을 만들 수 있습니다. "bm"을 변경하기 만하면됩니다. 북마크 이름을 묻는 메시지와 동일한 블록을 삽입하는 VBA는 어렵지 않을 것입니다.

일반적으로 제안 된 일반적인 기술을 사용하더라도 필드를 단순화하는 방법이있을 수 있습니다. 개인적으로, 나는 어떤 종류의 자리 표시자를 삽입하고 올바르게 설정하기 위해 일부 "사전 출판 VBA"를 실행해야하는 디자인을 생각해 보았습니다.

관련 문제