我终于成功地在 Mac OS X Mountain Lion 上安装了 Inkscape 0.48。我的 TeX 发行版是 TeX Live。
我已经安装了 TexText 0.4.4。并且我可以使用该扩展来编写简单的 LaTeX 文本(我尝试使用 \emph{},效果很好)。
用此包编写满文的命令是,需要排版(转录输入)的满文文本在{\bth manju gisun}
哪里。manju gisun
manju
但是,我无法将它与从中下载并安装的软件包一起使用
http://www.ctan.org/tex-archive/language/manju
我在 TexText 中添加了以下序言:
\usepackage{fontspec}
\usepackage{manju}
有了这个前言(和\documentclass{article}
),当我在编辑器中使用 XeLaTeX 进行编译时,我就能成功输入满文。
但是在 Tex Tex 中它不起作用,并且我收到以下错误消息:
! Undefined control sequence.
l.7 {\bth
manju gisun}
?
! Emergency stop.
l.7 {\bth
manju gisun}
! ==> Fatal error occurred, no output PDF file produced!
这是否意味着该manju
包与 TexText 不兼容?
更新
我也尝试使用“montex”mls
包,它已替换manju
。然而,结果仍然相同:错误。
更新
这是一个最小的示例mls
,当我使用编辑器中的 XeLaTeX 对其进行编译时它可以工作:
\documentclass{article}
\usepackage{mls}
\begin{document}
\bithe{manju gisun} % \bithe{} is the command for entering Manchu text in mls.
\end{document}
在 Inkscape 中的 Tex Text 中,我省略了\documentclass{article}
、\begin{document}
和\end{document}
,只保留了\usepackage{mls}
前言和\bithe{manju gisun}
正文中的 。这会导致上述错误。
更新
只是为了澄清我最终想要做什么,无论如何:
我正在尝试重建此页面:
其他人似乎为此目的使用了 Adobe Indesign,但我无权访问该程序,如下例所示:
答案1
以下答案是一种可能的解决方法(或穷人的线装中文书),使用PDF+LaTeX方法适用于 Inkscape 和pdflatex
。如果不是全部的话,其中一些部分可能可以适用于xelatex
。
解决 Inkscape 中文本对齐问题的一种策略是将零宽度\makebox
框与\colorbox
和\raisebox
命令结合使用,因为左心室(左-右)框可以是任意复杂的[LaTeX 伴侣,第 860 页]。
前言
您需要的新声明取决于手头的问题。虽然我不熟悉蒙古文和满文(以及重新制作一本线装中文书的语言要求到底是什么),但我看了montex
手册并定义了三个新命令,\ibox
,\icbox
和\ipbox
。
\documentclass{article}
\usepackage{calc}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage[latin1]{mls}
%% LR-box and paragraph box commands to lay text in Inkscape
%%
%% LR-box: #1 = (optional) value of \fboxsep
%% #2 = horizontal alignment relative to anchor, [c], [s], [l], [r]
%% #3 = text
\newcommand{\ibox}[3][0mm]{{\setlength{\fboxsep}{#1}%
\makebox[0pt][#2]{\raisebox{-1.0\height}[0pt]{\colorbox{White}{#3}}}}}
\newcommand{\icbox}[3][0mm]{{\setlength{\fboxsep}{#1}%
\makebox[0pt][#2]{\raisebox{0.5\width}[0pt]{\colorbox{White}{#3}}}}}
%%
%% paragraph box: #1 = (optional) value of \fboxsep
%% #2 = horizontal alignment relative to anchor, [c], [s], [l], [r]
%% #3 = height above anchor as a fraction of box height
%% #4 = text
\newcommand{\ipbox}[4][0mm]{{\setlength{\fboxsep}{#1}%
\makebox[0pt][#2]{\raisebox{#3\totalheight - 1.0\totalheight}[0pt]{\colorbox{White}{#4}}}}}
前两个命令\ibox
和\icbox
,非常适合以下montex
命令:
\bosoo
\mbosoo
\mobosoo
\mabosoo
这两个命令的第一个参数都是可选的,而第二个参数控制相对于对象锚点的水平文本对齐方式(在 Inkscape 中):[ l
] 使文本向右突出;[ c
] 使文本居中;[ r
] 使文本向左突出。这两个命令之间的唯一区别是\ibox
文本的布局以下对象锚点,同时\icbox
使文本相对于其垂直居中。
\ipbox
更适合用\mobox
或构造的垂直文本框\mabox
。第一个参数是可选的,第三个参数用于控制框关于锚点的垂直对齐,
\ipbox{...}{<value>}{...}
其中<value>
是盒子总高度的一部分,因此:
<value>
=0
放置文本以下锚<value>
=0.5
文本垂直居中<value>
=1.0
放置文本多于锚
Inkscape 补丁(可选)
PDF+LaTeX 选项会生成两个文件,扩展名为.pdf
和.pdf_tex
。如果您有许多文件,将所有 SVG 文件重新导出为 PDF 会非常耗时。下面您将找到一个 Inkscape 补丁(将其添加到您的序言中),这样当您修改其中一个 SVG 文件时,pdflatex
在主.tex
文件上运行将导致 Inkscape 自动将该 SVG 文件重新导出为 PDF。
\usepackage{import} % provides \import and \subimport to establish
% input relative to a directory
%% Inkscape patch that re-exports <file>.svg to PDF+LaTeX in Inkscape
%% whenever the SVG file is updated
%% NOTE: the current patch requires that all three files (i.e., .PDF,
%% .PDF_TEX, and .SVG) have the same name and be present in the
%% same directory
%%
%% modified from:
%% http://anorien.csc.warwick.ac.uk/mirrors/CTAN/info/svg-inkscape/InkscapePDFLaTeX.pdf
%%
%% \executeiffilenewer compares the modification date of SVG and PDF files
\newcommand{\executeiffilenewer}[3]{%
\ifnum\pdfstrcmp%
{\pdffilemoddate{#1}}%
{\pdffilemoddate{#2}}%
>0%
{\immediate\write18{#3}}%
\fi%
}
%% \includesvg is used to include graphics
%% syntax: \includesvg{<file>}, \includesvg[path/to/file/]{<file>}
\newcommand{\includesvg}[2][]{%
\executeiffilenewer{#1#2.svg}{#1#2.pdf}%
{inkscape -z -D --file=#1#2.svg --export-pdf=#1#2.pdf --export-latex}%
\subimport{#1}{#2.pdf_tex}%
}
要使补丁生效,你需要(1)将 Inkscape 添加到操作系统的搜索路径中,然后(2)将命令行参数-shell-escape
(或者可能是--shell-escape
)传递给pdflatex
编译器。后者取决于您的设置:操作系统和编辑器。您将找到 Texmaker(或 TeXStudio)的说明这里以及 TeXworks(在 Windows 上)这里(见步骤2)。
Inkscape 环境
下面是我在 Inkscape 中包含文本对象的屏幕截图:
- 红色圆圈表示该文本对象的锚点位置。在 Inkscape 中,锚点位置通过设置文本对齐类型(左对齐、居中对齐、右对齐)来控制。它决定了文本相对于哪个点放置
\ibox
,等等。 - 黄色虚线是文本对齐的辅助线(保存到 Inkscape 上的另一个图层)。文本对象的锚点与这些线对齐。
- Inkscape 上的字体大小对最终结果没有影响。
- 确保 Inkscape 的边界框紧贴主框架(如果一些文本对象超出框架,这是可以接受的)。一种方法是:选择除文本对象之外的整个绘图,然后转到文档属性,根据内容调整页面大小,然后点击根据绘图或所选内容调整页面大小。
包含的字符串(从上到下、从左到右):
\ibox{c}{\LARGE\mabosoo{uindur}}
\ibox{c}{\small\mabosoo{uindur gegen}}
\ibox{c}{\small\mabosoo{zanabazar}}
\ibox{c}{\Large\mabosoo{ugar}}
\ibox{c}{\large\mabosoo{17..18 ugar zagun-u}}
\ipbox{c}{0.5}{\mobox{3.75cm}{%
\noindent\raggedleft
cinggis xagan-u aldan urug-un izagur surbulzidan abadai
saiin nuyan xan-u kuiu}}
文件另存为cnbook.svg
,然后使用 PDF+LaTeX 选项导出为 PDF(另存为cnbook.pdf
)。您可以下载这些文件的副本这里。
在 LaTeX 中包含图形
用于包含图形没有补丁,将所有三个 Inkscape 文件的副本放在与主.tex
文件相同的目录中。然后使用:
\begin{document}
\large
\begin{figure}[h!]\centering
%\def\svgwidth{<desired width>} % \svgwidth is forgotten outside the figure environment
\input{cnbook.pdf_tex}
\end{figure}
\end{document}
要将图形包含在补丁中,请将其替换\input
为\includesvg
。例如,如果您将所有三个 Inkscape 文件的副本放在子文件夹中graphics
,则使用
\includesvg[graphics/]{cnbook}
最终结果:
垂直显示 CJK 字符
解决方案是放置\rotatebox
里面的参数\ibox
(而不是相反)。但是,此命令是针对蒙古语和满语声明的,因此您可能需要针对其他语言进行调整。对于明字体的中文字符,\ibox
可能看起来有点奇怪,请考虑:
%% compiler: xelatex
\usepackage{graphicx}
\usepackage{rotating}
\usepackage[dvipsnames]{xcolor}
\usepackage{fontspec}
\usepackage{xeCJK}
\setCJKmainfont[RawFeature={vertical}]{宋体}
%% same as before
\newcommand{\ibox}[3][0mm]{{\setlength{\fboxsep}{#1}%
\makebox[0pt][#2]{\raisebox{-1.0\height}[0pt]{\colorbox{Yellow}{#3}}}}}
%%
%% LR-box: #1 = (optional) value of \fboxsep
%% #2 = horizontal position relative to anchor
%% #3 = height above anchor as a fraction of box height
%% #4 = text
\newcommand{\icjk}[4][0mm]{{\setlength{\fboxsep}{#1}%
\makebox[0pt][c]{\raisebox{#3\totalheight}{\rotatebox{-90}{\raisebox{#2}[0pt]{#4}}}}}}
\begin{document}
aaaM\ibox{c}{\rotatebox{-90}{latin}}%
aaaM\ibox{c}{\rotatebox{-90}{大清全書}}%
aaaM\icjk{0pt}{0}{大清全書}%
aaa
\end{document}
使用\icjk
,您可以轻松控制字符的水平和垂直对齐:
\icjk{0pt}{0}{大清全書}\rule{1cm}{0.5pt}
\icjk{0pt}{0.5}{大清全書}\rule{1cm}{0.5pt}
\icjk{0pt}{1.0}{大清全書}
PDF 输出旁边的 Inkscape 屏幕截图:
\icjk{0pt}{0.5}{\Huge{}大清全書} % first column
\icjk{0pt}{0}{\LARGE{}大清全書} % second column