pandoc
XeLaTeX 엔진을 사용하고 있습니다 . 특정 캐릭터 주변의 공간이 한쪽이 다른 쪽보다 더 큰 문제가 있습니다. 다음과 같은 마크다운이 주어지면:
`X ≼ Y` // 3 spaces on the right
`X ≼ Y` // 2 spaces on the right
`X ≼ Y` // 1 space on the right
pandoc
(을 통해 ) 생성된 라텍스는 다음과 같습니다.
\texttt{X\ ≼\ \ \ Y}
\texttt{X\ ≼\ \ Y}
\texttt{X\ ≼\ Y}
결과는 다음과 같습니다.
왼쪽의 한 칸은 ≼
오른쪽의 약 3칸과 같습니다. 또한, Y
이후에 문자를 사용하면 잘못된 글꼴을 사용하여 문자가 인쇄됩니다 ≼
.
무엇이 문제일까요? 내가 사용하고 있기 때문인가?대체 글꼴이 단일 문자에 대해서만 간격에 영향을 줍니까?
\usepackage{ucharclasses}
\newfontfamily{\fallbackfont}{FreeMono}
\newfontfamily{\mymainfont}{MyFont}
\setTransitionsForMathematics{\fallbackfont}{\mymainfont}
전체 마크다운 및 생성된 LaTeX를 포함하여 편집합니다.
내 마크다운:
# MWE
Test: `X ≼ Y` test test
`X ≼ Y`
`X ≼ Y`
`X ≼ Y`
X ≼ Y
metadata.yml
:
---
title: Title title
author: Michał Miszczyszyn
rights: All rights reserved
lang: pl-PL
toc: yes
documentclass: scrbook
papersize: b5
geometry: b5paper
mainfont: Merriweather
monofont: Fira Code
indent: true
thanks: Thanks
---
header.latex
:
\addtokomafont{disposition}{\rmfamily}
\usepackage{indentfirst}
\setlength\parindent{24pt}
\setlength{\parskip}{.2\baselineskip}
\usepackage{setspace}
\onehalfspacing
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
\usepackage{ucharclasses}
\newfontfamily{\fallbackfont}{FreeMono}
\newfontfamily{\mymainfont}{Merriweather}
\setTransitionsForMathematics{\fallbackfont}{\mymainfont}
\usepackage[all]{nowidow}
Pandoc 빌드 스크립트:
pandoc \
-f markdown+line_blocks+escaped_line_breaks+smart+fenced_code_blocks+fenced_code_attributes+backtick_code_blocks+yaml_metadata_block+footnotes+inline_notes \
-F pandoc-citeproc \
--pdf-engine=xelatex \
--standalone \
--toc \
--include-in-header=header.latex \
--highlight-style=kate \
chapters/metadata.yaml \
chapters/test.md \
-o out/out.latex
Pandoc에서 생성된 LaTeX:
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
polish,
b5paper,
]{scrbook}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\setmainfont[]{Merriweather}
\setmonofont[]{Fira Code}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
pdftitle={Title title},
pdfauthor={Michał Miszczyszyn},
pdflang={pl-PL},
hidelinks,
pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage[b5paper]{geometry}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\addtokomafont{disposition}{\rmfamily}
\usepackage{indentfirst}
\setlength\parindent{24pt}
\setlength{\parskip}{.2\baselineskip}
\usepackage{setspace}
\onehalfspacing
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
\usepackage{ucharclasses}
\newfontfamily{\fallbackfont}{FreeMono}
\newfontfamily{\mymainfont}{Merriweather}
\setTransitionsForMathematics{\fallbackfont}{\mymainfont}
\usepackage[all]{nowidow}
\ifxetex
% Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
\usepackage{polyglossia}
\setmainlanguage[]{polish}
\else
\usepackage[shorthands=off,main=polish]{babel}
\fi
\title{Title title\thanks{Thanks}}
\author{Michał Miszczyszyn}
\date{}
\begin{document}
\frontmatter
\maketitle
{
\setcounter{tocdepth}{2}
\tableofcontents
}
\mainmatter
\hypertarget{mwe}{%
\chapter{MWE}\label{mwe}}
Test: \texttt{X\ ≼\ Y} test test
\texttt{X\ ≼\ \ \ Y}
\texttt{X\ ≼\ \ Y}
\texttt{X\ ≼\ Y}
X ≼ Y
\backmatter
\end{document}
답변1
분명히 당신의 예에서는 폴백에서 다시 전환하는 것이 엉망입니다. 즉 , \mymainfont
심지어≼
이내에 \texttt
. 그렇기 때문에 길이가 다른 공간이 생기는 것입니다.
매우 적은 수의 대체 문자만 원하는 경우 수동으로 설정하는 것이 좋습니다.
\documentclass{scrbook}
\usepackage{unicode-math}
\setmainfont{Merriweather}
\setmonofont{FreeMono}
\usepackage{newunicodechar}
\newfontfamily{\fallbackfont}{FreeMono}
\DeclareTextFontCommand\textfallback{\fallbackfont}
\newunicodechar{≼}{\textfallback{≼}}
\begin{document}
Test: \texttt{X\ ≼\ Y} test test
\texttt{X\ ≼\ \ \ Y}
\texttt{X\ ≼\ \ Y}
\texttt{X\ ≼\ Y}
X ≼ Y
\end{document}