我想在 gb4e 的直行注释中合并西里尔文和拉丁文文本。但我总是检索到错误。
这是我的 tex 文档:
\documentclass{article}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex
\gll Путин опроверг дискриминацию геев в России \\
putin oproverg diskriminatsiju gejev v rossii \\
putin membantah-V-LAMP-PERF diskriminasi-AKU gay-GEN di rusia-PREP \\
\trans Putin membantah adanya diskriminasi terhadap kelompok gay di Rusia
\end{exe}
\end{document}
它检索到这个错误:
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./gloss.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-02-20>
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2024/texmf-dist/tex/latex/gb4e/gb4e.sty
(/usr/local/texlive/2024/texmf-dist/tex/latex/gb4e/cgloss4e.sty))
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./gloss.aux)
./gloss.tex:11: LaTeX Error: Unicode character П (U+041F)
not set up for use with LaTeX.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.11 ...oproverg dis
./gloss.tex:11: LaTeX Error: Unicode character у (U+0443)
not set up for use with LaTeX.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.11 ...oproverg diskriminatsiju gejev v rossii \\
? kriminatsiju gejev v rossii \\
?
有没有什么方法可以改进我的文档?
我在 Mac 中使用 TeXShop。
答案1
您需要加载俄语babel
。但是,由于\gll
要用空格分割输入,因此您无法这样做\foreignlanguage{russian}{<sentence>}
,而是分别处理每个单词。
在我看来,使用简短的命令更好。
\documentclass{article}
\usepackage[russian,indonesian]{babel}
\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex
\gll \?{Путин} \?{опроверг} \?{дискриминацию} \?{геев} \?{в} \?{России} \\
putin oproverg diskriminatsiju gejev v rossii \\
putin membantah-V-LAMP-PERF diskriminasi-AKU gay-GEN di rusia-PREP \\
\trans Putin membantah adanya diskriminasi terhadap kelompok gay di Rusia
\end{exe}
\end{document}
答案2
自定义宏\glinlines{}
可以将格式应用于整行,并保留空格作为分隔符。
平均能量损失
\documentclass{article}
%\usepackage[russian,indonesian]{babel}
%\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\usepackage{xcolor,luacolor,lua-ul}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\setsansfont{Noto Sans}
\setmonofont{Noto Sans Mono}
\input{in-glinlines2.tex}
\setmainlanguage{indonesian}
\setotherlanguage{russian}
\usepackage{tikz} % before gb4e
\usepackage{gb4e}
\begin{document}
\glsetfirstlineformat{\selectlanguage{russian}\large}
\glsetsecondlineformat{\sffamily\color{brown}}
\mfssetposformat{\scshape \bfseries\sffamily}
before::
\begin{document}
\begin{exe}
\ex
\glinlines{%
Путин опроверг дискриминацию геев в России:ldots
*/ putin oproverg diskriminatsiju gejev v rossii\ldots
*/ putin membantah.V.Lamp.Perf diskriminasi.Aku gay.Gen di rusia.Prep\ldots
glt \itshape ’Putin membantah adanya diskriminasi terhadap kelompok gay di Rusia'
}
\end{exe}
::after
\end{document}
用法:在语言示例中,不是为每一行使用一个命令,而是使用一个宏来涵盖所有行类型:行间行由其他地方未使用的字符串分隔(默认*/
),自由格式的文本行由其他地方未使用的另一个字符串分隔(默认glt
)。
数据结构为:一个或多个行间行,每行后面跟着零个或多个自由格式的文本行。
如果可以这样称呼的话,一个“传统”语言示例的结构为:一、二或三行行间行,最后行间行后跟零行或一行自由格式的文本。
如果文本中存在分隔符,则xx
可以通过选项为每个示例设置不同的分隔符(例如)。
该宏还可以用于任何需要普通文本的地方,例如脚注、内联文本等。
怎么运行的:将单词装箱,然后将单词框堆叠成单词堆栈,单词堆栈的宽度设置为堆栈中最宽单词框的宽度,再加上一点额外的宽度以方便阅读。Expl3 用于此目的。
空间用作分隔符。所有行间行必须具有相同数量的空格,以使单词对齐。要将两个或多个单词视为一个单元,请将它们括起来{}
。
字可以使用附加到单词的基本 markdown(以保留空格)单独格式化(或插入代码),然后将其正则化回 Latex 命令。例如,text:command
变为text\command
。有关更多示例,请参阅参考手册。
线条可以格式化以提高可读性。请参阅 MWE 中的一些示例。
词栈也可以被格式化,例如用于突出显示某个特殊功能。
其他功能包括注音文本、从 xpinyin.def 数据库中选择所需的声调标记以及生成词性词汇表。
融入文本流:添加不同格式的标点符号。
挂钩文本流:添加 tikzmark 锚点来进行覆盖。
定义自定义行分隔符。
Wordstacks 变得可见。
突出显示单词堆栈。
Termux:Android 平板电脑上的“微型”编辑器屏幕。
宏的支持代码太大,无法放入此答案中。假设已“完整”安装 TexLive。r
作为一种解决方法,忽略所有字体消息(或编辑字体名称),直到我/您将它们设为条件或以其他方式对其进行硬编码。((理想情况下应该有一个函数来实现这一点。嗯……))
复制in-glinlines2.tex
并in-glossing.tex
来自https://github.com/texcicada/expl3
参考PDF:https://github.com/texcicada/expl3/blob/main/glinlines-demo2.pdf