Inkscape 中的 TexText 是否只能加载某些包? - 或者,如何从线装中文书中重新创建页面?

Inkscape 中的 TexText 是否只能加载某些包? - 或者,如何从线装中文书中重新创建页面?

我终于成功地在 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}正文中的 。这会导致上述错误。

更新

只是为了澄清我最终想要做什么,无论如何:

我正在尝试重建此页面:大清全书

其他人似乎为此目的使用了 Adob​​e 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

在此处输入图片描述

相关内容