我对虚拟字体进行了一些更改,如下所示:
(LABEL C 9)
(LIG O 344 C L) (comment д L)
(STOP)
(LABEL O 346) (comment ж)
(LIG C 7 C 9) (comment 7 9)
(LIG O 134 C 9) (comment backslash 9)
(STOP)
它应该给我连字符转换:ж
+ 7
-> 9
,ж
+ \
-> 9
,9
+ д
-> L
。字体正向和反向编译为我提供了类似的.vpl
字体源文件(只是没有注释)。在安装字体后,当我尝试.pdf
从构建时.tex
,结果.pdf
很奇怪。规则是第一次连字符转换后使用反斜杠,第二次没有发生,而如果没有反斜杠字符,它就会发生。所以来源tex
:
ж\д ж7д 9д
将转换为:
9д L L
所以问题是:pdftex
当使用反斜杠时,是什么阻止我呈现正确的连字?第二个是如何解决这个问题?
更新
这.vpl
(VTITLE Created by afm2tfm irmucs.afm -O -u -v irmucsv.vpl -T orthucs8.enc)
(FAMILY TEX-IRMUCS)
(FACE F MRR)
(CODINGSCHEME ORTUCS8TOT2AENCODING)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 1124771264)
(FONTDIMEN
(SLANT R 0.0)
(SPACE R 0.5)
(STRETCH R 0.2)
(SHRINK R 0.1)
(XHEIGHT R 0.487)
(QUAD R 1.0)
(EXTRASPACE R 0.111)
)
(MAPFONT D 0
(FONTNAME irmucs)
(FONTCHECKSUM O 1124771264)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(LIGTABLE
(LABEL C 9) (comment zqivete_pod_vzmetom)
(LIG C d C L) (comment zqivete_pod_vzmetom + dobrotitlo -> zqivete_pod_dobrotitlom)
(STOP)
(LABEL C L)
(KRN C q R 0.005)
(KRN O 240 R 0.005)
(KRN C b R 0.005)
(KRN O 135 R -0.007)
(KRN C W R -0.018)
(KRN O 100 R 0.005)
(KRN O 247 R -0.018)
(KRN O 206 R 0.005)
(KRN O 255 R 0.005)
(KRN O 224 R -0.007)
(KRN O 223 R 0.005)
(KRN C m R -0.01)
(KRN C l R -0.008)
(KRN C k R -0.008)
(KRN O 263 R -0.013)
(KRN C h R -0.01)
(KRN O 267 R -0.013)
(KRN O 255 R -0.017)
(KRN O 135 R -0.017)
(KRN O 134 R -0.01)
(KRN O 337 R -0.008)
(KRN C W R -0.013)
(KRN C U R -0.006)
(KRN C T R -0.01)
(KRN O 275 R -0.006)
(KRN C R R -0.01)
(KRN C N R -0.01)
(KRN O 16 R -0.006)
(KRN C G R -0.01)
(KRN C F R -0.006)
(KRN O 222 R -0.013)
(KRN O 265 R -0.01)
(KRN O 247 R -0.013)
(KRN O 246 R -0.006)
(KRN O 233 R -0.017)
(KRN O 231 R -0.01)
(KRN O 211 R -0.01)
(KRN O 174 R -0.01)
(KRN O 173 R -0.006)
(KRN O 377 R -0.01)
(KRN C 2 R -0.006)
(KRN C w R -0.013)
(KRN C v R -0.017)
(KRN C u R -0.008)
(KRN C t R -0.013)
(KRN O 276 R -0.01)
(KRN O 230 R -0.017)
(KRN O 240 R -0.01)
(KRN C n R -0.01)
(KRN C m R -0.017)
(KRN C f R -0.024)
(KRN O 252 R -0.013)
(KRN C Y R -0.006)
(KRN O 275 R -0.01)
(KRN O 202 R -0.013)
(KRN O 222 R -0.013)
(KRN O 224 R -0.017)
(KRN O 51 R -0.051)
(STOP)
(LABEL O 344)
(LIG O 267 C D)
(STOP)
(LABEL O 346)
(LIG O 176 C 9)
(LIG C 7 C 9) (comment digit7 digit9)
(LIG O 134 C 9) (comment backslash digit9)
(STOP)
(LABEL O 134) (comment backslash)
(KRN C m R -0.031)
(KRN C l R -0.03)
(KRN C k R -0.03)
(KRN O 263 R -0.052)
(KRN O 252 R -0.018)
(KRN C d R -0.019)
(KRN O 267 R -0.019)
(KRN O 255 R -0.069)
(KRN O 135 R -0.035)
(KRN C W R -0.062)
(KRN C V R -0.019)
(KRN C U R -0.041)
(KRN O 275 R -0.007)
(KRN C R R -0.034)
(KRN C Q R -0.015)
(KRN O 254 R -0.014)
(KRN C N R -0.015)
(KRN C M R -0.008)
(KRN C G R -0.022)
(KRN C F R -0.012)
(KRN O 222 R -0.011)
(KRN O 224 R -0.008)
(KRN O 265 R -0.068)
(KRN O 251 R -0.015)
(KRN O 247 R -0.062)
(KRN O 246 R -0.041)
(KRN O 233 R -0.069)
(KRN O 231 R -0.034)
(KRN O 174 R -0.031)
(KRN O 173 R -0.007)
(KRN C 2 R -0.007)
(KRN C w R -0.052)
(KRN C v R -0.069)
(KRN C u R -0.03)
(KRN C t R -0.052)
(KRN C q R -0.035)
(KRN O 230 R -0.096)
(KRN O 240 R -0.031)
(KRN C n R -0.031)
(KRN C m R -0.069)
(KRN C f R -0.019)
(KRN O 252 R -0.011)
(KRN C Y R -0.007)
(KRN O 202 R -0.052)
(KRN O 222 R -0.011)
(KRN O 224 R -0.035)
(KRN O 52 R -0.111)
(KRN O 51 R -0.07)
(LIG O 344 O 144) (comment backslash + dobro -> d)
(STOP)
(LABEL C d)
(KRN C q R -0.013)
(KRN O 240 R -0.013)
(KRN C l R -0.011)
(KRN C k R -0.011)
(KRN O 210 R -0.015)
(KRN O 263 R -0.011)
(KRN C h R -0.015)
(KRN C d R -0.019)
(KRN O 267 R -0.011)
(KRN C b R -0.013)
(KRN O 255 R -0.042)
(KRN O 137 R -0.015)
(KRN O 337 R -0.008)
(KRN C W R -0.056)
(KRN C U R -0.033)
(KRN C L R -0.015)
(KRN O 221 R -0.015)
(KRN C F R -0.012)
(KRN O 222 R -0.011)
(KRN C D R -0.027)
(KRN O 224 R -0.007)
(KRN O 100 R -0.013)
(KRN O 265 R -0.037)
(KRN O 261 R -0.015)
(KRN O 247 R -0.056)
(KRN O 246 R -0.033)
(KRN O 233 R -0.042)
(KRN O 211 R -0.015)
(KRN O 206 R -0.013)
(KRN O 377 R -0.015)
(KRN C w R -0.011)
(KRN C v R -0.042)
(KRN C u R -0.011)
(KRN C t R -0.018)
(KRN O 276 R -0.015)
(KRN O 230 R -0.049)
(KRN C m R -0.042)
(KRN C l R -0.015)
(KRN C k R -0.015)
(KRN C f R -0.062)
(KRN O 252 R -0.011)
(KRN O 255 R -0.013)
(KRN O 275 R -0.015)
(KRN C L R -0.015)
(KRN O 202 R -0.011)
(KRN O 222 R -0.011)
(KRN C D R -0.027)
(KRN O 223 R -0.013)
(KRN O 57 R -0.045)
(KRN O 54 R -0.033)
(KRN O 52 R -0.115)
(KRN O 51 R -0.069)
(STOP)
)
(CHARACTER C 7
(CHARWD R 0.001)
(CHARHT R 0.88)
(CHARDP R 0.2)
(MAP
(SETCHAR C 7)
)
)
(CHARACTER C 9
(CHARWD R 0.684)
(CHARHT R 0.88)
(CHARDP R 0.2)
(MAP
(SETCHAR C 9)
)
)
(CHARACTER C L
(CHARWD R 0.426)
(CHARHT R 0.88)
(CHARDP R 0.2)
(CHARIC R 0.047)
(MAP
(SETCHAR C L)
)
)
(CHARACTER O 134
(CHARWD R 0.001)
(CHARHT R 0.88)
(CHARDP R 0.2)
(MAP
(SETCHAR O 134)
)
)
(CHARACTER C d
(CHARWD R 0.001)
(CHARHT R 0.88)
(CHARDP R 0.2)
(MAP
(SETCHAR C d)
)
)
(CHARACTER O 344
(CHARWD R 0.402)
(CHARHT R 0.88)
(CHARDP R 0.2)
(MAP
(SETCHAR O 344)
)
)
(CHARACTER O 346
(CHARWD R 0.684)
(CHARHT R 0.88)
(CHARDP R 0.2)
(MAP
(SETCHAR O 346)
)
)
我试过有和没有这条线(LIG O 344 O 144) (comment backslash + dobro -> d)
还有.tex
:
$ cat hello.tex
\documentclass[12pt,a6paper,twoside,dvips,civil=antiqua,cs=irmologion]{hipbook}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\begin{document}
ж\д ж~д ж7д 9д
\end{document}
我也利用这些变化backslash
我也使用了行为的这里, 作为:
\newcommand\spc[1]{%
\symbol{`\\}% the backslash
#1% the letter
}
\def\^^d0#1{\spc{^^d0#1}}
\def\^^d1#1{\spc{^^d1#1}}
答案1
引用的代码使用\symbol
,其定义以 结尾,\relax
因此抑制带有后跟字符但不带有前跟字符的连字符。
使用一个可以运行的示例:
\documentclass{article}
\begin{document}
\showoutput
1 ff
2 f\relax f
3 \symbol{`f}f
4 f\symbol{`f}
\end{document}
生产
....\OT1/cmr/m/n/10 1
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 (ligature ff)
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 2
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 f
....\OT1/cmr/m/n/10 f
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 3
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 f
....\OT1/cmr/m/n/10 f
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 4
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 (ligature ff)
最后一个例子用\symbol
作为第二个字符产生连字,但是用\symbol
作为第一个字符则不会。
据我所知,这与观察到的行为相符,所以我猜这就是问题所在。
你可以使用
\char`\f
代替
\symbol{f}
(在您的示例中使用反斜杠代替 f )或者您可以像初始注释中指出的那样,更改 catcode 使其\
成为普通字符,例如在
\catcode`\/=0
\catcode`\\=12
然后\
将是一个普通字符,只需将其排版为其自身,并且命令名称(例如 begin 和 end)必须作为/begin
和进行访问/end