
내 텍스트에 맞게 조정한 ReVTeX bst 파일에는 다음과 같은 코드 부분이 있습니다.
FUNCTION {control.decode}
{
- duplicate$
#0 <
{
skip$ pop$ swap$ #0
}
{
swap$ pop$ swap$ #1
}
if$
swap$ :=
}
FUNCTION {control.author.decode}
{
control.author
duplicate$ duplicate$ #0 < swap$ #128 < not or
{
int.to.str$ "(" swap$ * ")" *
"Control cannot interpret author " swap$ *
warning$
}{
'control.author.jnrlst swap$ duplicate$ #64 control.decode
'control.author.dotless swap$ duplicate$ #32 control.decode
'control.author.nospace swap$ duplicate$ #16 control.decode
'control.author.initials swap$ duplicate$ #8 control.decode
'control.author.nocomma swap$ duplicate$ #4 control.decode
'control.author.first swap$ duplicate$ #2 control.decode
'control.author.reversed swap$ duplicate$ #1 control.decode
duplicate$ #0 =
'skip$
{
"Control: residue of author"
"(" swap$ * ")" * *
warning$
}
if$
pop$
}
if$
}
이 코드는 내가 엉망으로 만들고 싶은 작성자 표시 옵션을 설정합니다. 옵션은 다음과 같이 설정됩니다.
@CONTROL{REVTEX41Control}
@CONTROL{apsrev41Control,author="42",editor="1",pages="1",title="0",year="0"}
가 일부 옵션 설정을 나타내는 경우 42
(3, 7, 00과 같은 임의의 값을 선택하기 때문에) 이러한 옵션과 관련된 경고가 생성됩니다. 이것이 어떻게 '디코딩'되는지 설명해 줄 수 있는 사람이 있나요? 이것이 실제로 출력에 어떤 영향을 미치는지 알고 싶습니다.
답변1
여기서의 아이디어는 control.author
모두 하나의 숫자로 인코딩된 다양한 옵션에 대한 정보를 전달할 수 있다는 것입니다. 이는 일련의 부울 설정을 전달하기 위해 숫자의 다른 비트를 사용하는 표준 아이디어입니다. 데이터를 '복구'하려면 먼저 범위(0보다 큼, 128보다 작음)에 있는 control.author.decode
테스트를 수행합니다 . control.author
그건 다음에 의해 이루어졌어
control.author
duplicate$ duplicate$ #0 < swap$ #128 < not or
그러면 입력 스택에 의 값 control.author
과 논리적 결과(a 1
또는 a 0
)가 남습니다. 후위 언어는 후자를 의 일부로 선택합니다 if$
. 테스트가 통과되었다고 가정하면 블록은
'control.author.jnrlst swap$ duplicate$ #64 control.decode
'control.author.dotless swap$ duplicate$ #32 control.decode
'control.author.nospace swap$ duplicate$ #16 control.decode
'control.author.initials swap$ duplicate$ #8 control.decode
'control.author.nocomma swap$ duplicate$ #4 control.decode
'control.author.first swap$ duplicate$ #2 control.decode
'control.author.reversed swap$ duplicate$ #1 control.decode
풋은이름각 설정을 스택에 저장한 다음 비트 단위로 추출하는 데 필요한 값을 입력하고 공통 디코더를 호출합니다. 예를 들어
'control.author.jnrlst swap$ duplicate$ #64 control.decode
입력이 42
스택에 있을 것입니다.
"control.author.jnrlst" #42 #42 #64
전화하기 직전에 control.decode
. 나중에는 64
컨트롤의 현재 값(여기 42
)에서 최종 값(여기: '테스트 값')을 가져옵니다. 입력이 'test' 값보다 큰 경우 플래그(여기 control.author.jnrlst
)는 (true)로 설정되고 1
결과 잔여물은 다음 테스트를 위한 입력에 남게 됩니다. 테스트가 실패하면 입력 값( 42
)이 유지되고 플래그가 0
(false)로 설정됩니다. 이를 통해 각 플래그를 true/false로 설정하고 모든 입력(즉범위 내에 있는 모든 숫자에 대해 테스트 결과는 0 값이어야 합니다.
주어진 예에서 설정 값은 authors
32 42
+ 8 + 2로 분류됩니다.즉설정 control.author.dotless
및 true이고 다른 설정은 false입니다 control.author.initials
. control.author.first
따라서 '올바른' 값을 계산하려면 활성화하려는 설정을 결정하고 코드를 살펴보고 적절한 값을 찾은 다음 모두 함께 추가하세요.