在 teubner.sty 最新更新(使用 GlyphNames)之前,只要没有加载 babel 的法语,就可以使用 \og-macro (ὸ)(teubner-doc.pdf 第 15 页,注 1)。现在,\og-macro 根本不起作用:pdf 输出中没有任何内容,而 .tex 文件中有一个 \og。在 .log 文件中,它显示
! Undefined control sequence.
l.596 t\og{} kal\og n mhk\ea ti \og{}
我的 .tex 文件中没有任何法语内容,即使我删除了每个单独的包、TeXify,删除了另一个包而不是最后一个包,\og 也不起作用。我看不到它在哪里被重新定义,甚至我在不同包之前和之后使用的 savesymbol 也不起作用。
天气预报:
\pdfgentounicode=1
\input glyphtounicode
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\documentclass{scrbook}
\usepackage{cmap}
\usepackage[LGR,T1]{fontenc}
\usepackage[utf8]{inputenc}
\input{ix-utf8enc.dfu}
\usepackage{savesym}
\usepackage[math=normal,greek,german,main=ngerman,english]{babel}
\usepackage{gfsdidot,gfsporson}
\usepackage[GlyphNames,boldLipsian]{teubner}
\savesymbol{breve}
\savesymbol{og}
\usepackage[osf,sc]{mathpazo}
\restoresymbol{pplj}{breve}
\usepackage[scaled=.95]{DejaVuSansCondensed}
\Lipsiantrue
\ifFamily{pplj}{porson}
\usepackage[nonegthinspace,twothirds]{thinsp}
\usepackage{fixltx2e}
\makeatletter
\renewcommand{\,}{\thinspace\allowhyphens}
\newcommand{\hrsp}{\ifmmode\mskip1mu\else\kern0.08em\fi}
\ifFamily{pplj}{porson}
\addto\greek@shorthands{%
\declare@shorthand{greek}{\/}{\textormath{\penalty\@M\discretionary{-}{}{\kern.03em}
\allowhyphens}{}}
}
\Lipsiantrue
\ifFamily{pplj}{porson}
\makeatother
\begin{document}
\subsection*{Platon \emph{Theaitetos} 184\hrsp b--185\hrsp d}
185\hrsp c\\
\begin{otherlanguage}{greek}to\uc to o\usa\/te \osa yis
o\usa\/te \as ko\hg{} fa\ia netai, \as ll\aa{} ti \asa llo. \quad
\textsc{JE.} T\ia{} d''\,o\us{} m\ea llei, \hra{} ge di\ag{} t\hc s
gl\wa sshs d\ua namis? \quad \textsc{SW.} Kal\wc s l\ea geis. \hr{}
d\eg{} d\hg{} di\ag{} t\ia nos d\ua namis t\oa{} t''\,\es p\ig{}
p\ac si koin\og n ka\ig{} t\og{} \es p\ig{} to\ua tois
dhlo\ic{} soi, \wrci{} t\og{} ((\esa stin)) \es p\/onom\aa zeis
ka\ig{} t\og{} ((o\us k \esa sti)) ka\ig{} \arg{} nun\/d\hg{}
\hs rwt\wa men per\ig{} a\us t\wc n? to\ua tois p\ac si po\ic a
\as po\/d\wa seis \osa rgana di''\,\wrc n a\is sj\aa netai \hr m\wc n
t\og{} a\is sjan\oa menon \era kasta? \quad \textsc{JE.} O\us s\ia an
l\ea geis ka\ig{} t\og{} m\hg{} e\isc nai, ka\ig{} \oR moi\oa\/thta
ka\ig{} \as n\/omoi\oa\/thta, ka\ig{} t\og{} ta\us t\oa n te ka\ig{}
t\og{} \era teron, \esa ti d\eg{} \era n te ka\ig{} t\og n \asa llon
\as rijm\og n per\ig{} a\us t\wc n.\\
\og\og\og
\end{otherlanguage}
\end{document}
答案1
这说明了问题:
\documentclass{scrbook}
\usepackage{savesym}
\usepackage[greek,english]{babel}
\usepackage[GlyphNames]{teubner}
\savesymbol{og}
\begin{document}
\begin{otherlanguage}{greek}\og\end{otherlanguage}
\begin{otherlanguage}{greek}to o\usa\end{otherlanguage}
\end{document}
这避免了这个问题:
\documentclass{scrbook}
\usepackage{savesym}
\usepackage[greek,english]{babel}
\usepackage[GlyphNames]{teubner}
\savesymbol{og}
\restoresymbol{pplj}{og}
\begin{document}
\begin{otherlanguage}{greek}\og\end{otherlanguage}
\begin{otherlanguage}{greek}to o\usa\end{otherlanguage}
\end{document}
至少,假设 \og 应该是这个样子。我不知道。
编辑:根据 OP 的评论,我正在编辑此答案。以上内容对于旧版本的 teubner 是正确的。对于较新的版本,以下内容显示了问题:
\documentclass{scrbook}
\usepackage{savesym}
\usepackage[greek,english]{babel}
\usepackage[GlyphNames]{teubner}
\savesymbol{oG}
\begin{document}
\begin{otherlanguage}{greek}\oG\end{otherlanguage}
\begin{otherlanguage}{greek}to o\usa\end{otherlanguage}
\end{document}
下面的语句可以避免这个问题:
\documentclass{scrbook}
\usepackage{savesym}
\usepackage[greek,english]{babel}
\usepackage[GlyphNames]{teubner}
\savesymbol{oG}
\restoresymbol{pplj}{oG}
\begin{document}
\begin{otherlanguage}{greek}\oG\end{otherlanguage}
\begin{otherlanguage}{greek}to o\usa\end{otherlanguage}
\end{document}
请注意,仅使用 \oG 进行更新是不够的。还需要 \restoresymbol... 才能显示字符。
输出如上图所示。